Класс ShortVector
public abstract class ShortVector extends Vector<Short>
Vector, представляющий собой упорядоченную неизменяемую последовательность значений short.Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final VectorSpecies |
SPECIES_128 |
Вид, представляющий ShortVector с размером VectorShape.S_128_BIT. |
static final VectorSpecies |
SPECIES_256 |
Вид, представляющий ShortVector с размером VectorShape.S_256_BIT. |
static final VectorSpecies |
SPECIES_512 |
Вид, представляющий ShortVector с размером VectorShape.S_512_BIT. |
static final VectorSpecies |
SPECIES_64 |
Вид, представляющий ShortVector с размером VectorShape.S_64_BIT. |
static final VectorSpecies |
SPECIES_MAX |
Предпочитаемый вид для ShortVector с максимальным размером VectorShape.S_Max_BIT. |
static final VectorSpecies |
SPECIES_PREFERRED |
Предпочитаемый вид для ShortVector. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
final ShortVector |
abs() |
Возвращает абсолютное значение этого вектора. |
final ShortVector |
add |
Добавляет этот вектор к широковещательной трансляции входного скаляра. |
final ShortVector |
add |
Добавляет этот вектор к широковещательной трансляции входного скаляра, выбирая элементы каналов, управляемые маской. |
final ShortVector |
add |
Добавляет этот вектор ко второму входному вектору. |
final ShortVector |
add |
Добавляет этот вектор ко второму входному вектору, выбирая каналы под управлением маски. |
abstract ShortVector |
addIndex |
Добавляет каналы этого вектора к соответствующим номерам каналов, масштабируя их заданным значением константы. |
final ShortVector |
and |
Вычисляет поразрядную логическую конъюнкцию ( &) этого вектора и скаляра. |
final ShortVector |
and |
Вычисляет поразрядную логическую конъюнкцию ( &) этого вектора и второго входного вектора. |
final ShortVector |
bitwiseBlend |
Объединяет биты вектора и скаляра под управлением другого скаляра, который предоставляет биты маски. |
final ShortVector |
bitwiseBlend |
Объединяет биты вектора и скаляра под управлением другого вектора, который предоставляет биты маски. |
final ShortVector |
bitwiseBlend |
Объединяет биты двух векторов под управлением скаляра, который предоставляет биты маски. |
final ShortVector |
bitwiseBlend |
Объединяет биты двух векторов под управлением третьего вектора, который предоставляет биты маски. |
final ShortVector |
blend |
Заменяет выбранные каналы этого вектора скалярным значением под управлением маски. |
final ShortVector |
blend |
Заменяет выбранные каналы этого вектора скалярным значением под управлением маски. |
abstract ShortVector |
blend |
Заменяет выбранные каналы этого вектора соответствующими каналами из второго входного вектора под управлением маски. |
abstract ShortVector |
broadcast |
Возвращает вектор того же типа, что и этот, где все элементы каналов установлены в примитивное значение e. |
abstract ShortVector |
broadcast |
Возвращает вектор того же типа, что и этот, где все элементы каналов установлены в примитивное значение e. |
static ShortVector |
broadcast |
Возвращает вектор заданного типа, где все элементы каналов установлены в примитивное значение e. |
static ShortVector |
broadcast |
Возвращает вектор заданного типа, где все элементы каналов установлены в примитивное значение e. |
final <F> Vector |
castShape |
Удобный метод для преобразования вектора из одного типа каналов в другой, переформировывая его при необходимости, когда размеры каналов меняются. |
final <F> Vector |
check |
Проверяет, что у этого вектора есть указанный тип элементов, и возвращает этот вектор без изменений. |
final <F> Vector |
check |
Проверяет, что у этого вектора есть указанный тип, и возвращает этот вектор без изменений. |
abstract VectorMask |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения. |
final VectorMask |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения в каналах, выбранных маской. |
abstract VectorMask |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения. |
final VectorMask |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения в каналах, выбранных маской. |
abstract VectorMask |
compare |
Тестирует этот вектор, сравнивая его с другим входным вектором в соответствии с заданной операцией сравнения. |
abstract ShortVector |
compress |
Сжимает элементы каналов этого вектора, выбирая каналы под управлением конкретной маски. |
final <F> Vector |
convert |
Преобразует этот вектор в вектор той же формы и нового типа элементов, преобразуя значения каналов из текущего ETYPE в новый тип каналов (называемый FTYPE здесь) в соответствии с указанным преобразованием. |
abstract <F> Vector |
convertShape |
Преобразует этот вектор в вектор заданного типа, формы и типа элементов, преобразуя значения каналов из текущего ETYPE в новый тип каналов (называемый FTYPE здесь) в соответствии с указанным преобразованием. |
final ShortVector |
div |
Делит этот вектор на широковещательную трансляцию входного скаляра. |
final ShortVector |
div |
Делит этот вектор на широковещательную трансляцию входного скаляра, выбирая элементы каналов, управляемые маской. |
final ShortVector |
div |
Делит этот вектор на второй входной вектор. |
final ShortVector |
div |
Делит этот вектор на второй входной вектор под управлением маски. |
final VectorMask |
eq |
Проверяет, равен ли этот вектор входному скаляру. |
final VectorMask |
eq |
Проверяет, равен ли этот вектор другому входному вектору. |
final boolean |
equals |
Указывает, идентичен ли этот вектор какому-либо другому объекту. |
abstract ShortVector |
expand |
Расширяет элементы каналов этого вектора под управлением конкретной маски. |
static ShortVector |
fromArray |
Загружает вектор из массива типа short[], начиная с смещения. |
static ShortVector |
fromArray |
Собрать новый вектор, составленный из элементов массива типа short[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ShortVector |
fromArray |
Собрать новый вектор, составленный из элементов массива типа short[], под управлением маски, и используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ShortVector |
fromArray |
Загружает вектор из массива типа short[], начиная со смещения, и используя маску. |
static ShortVector |
fromCharArray |
Загружает вектор из массива типа char[], начиная со смещения. |
static ShortVector |
fromCharArray |
Собрать новый вектор, составленный из элементов массива типа char[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ShortVector |
fromCharArray |
Собрать новый вектор, составленный из элементов массива типа char[], под управлением маски, и используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ShortVector |
fromCharArray |
Загружает вектор из массива типа char[], начиная со смещения, и используя маску. |
static ShortVector |
fromMemorySegment |
Загружает вектор из сегмента памяти, начиная со смещения в сегменте памяти. |
static ShortVector |
fromMemorySegment |
Загружает вектор из сегмента памяти, начиная со смещения в сегменте памяти, и используя маску. |
protected final Object |
getPayload() |
|
final int |
hashCode() |
Возвращает хэш-код для вектора. |
final void |
intoArray |
Хранит этот вектор в массиве типа short[], начиная с указанного смещения. |
final void |
intoArray |
Разбрасывает этот вектор в массив типа short[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
final void |
intoArray |
Разбрасывает этот вектор в массив типа short[], под управлением маски, и используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
final void |
intoArray |
Хранит этот вектор в массиве типа short[], начиная со смещения и используя маску. |
final void |
intoCharArray |
Хранит этот вектор в массиве типа char[], начиная с указанного смещения. |
final void |
intoCharArray |
Разбрасывает этот вектор в массив типа char[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
final void |
intoCharArray |
Разбрасывает этот вектор в массив типа char[], под управлением маски, и используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
final void |
intoCharArray |
Хранит этот вектор в массиве типа char[], начиная со смещения и используя маску. |
final void |
intoMemorySegment |
Хранит этот вектор в сегменте памяти, начиная со смещения, используя явное порядок байтов. |
final void |
intoMemorySegment |
Хранит этот вектор в сегменте памяти, начиная со смещения, используя явное порядок байтов и маску. |
abstract short |
lane |
Получает элемент в позиции канала i
|
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значением вещаемого скаляра. |
final ShortVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями второго входного вектора, с выбором элементов каналов, управляемым маской. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значением вещаемого скаляра. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значением вещаемого скаляра, с выбором элементов каналов, управляемых маской. |
abstract ShortVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями второго входного вектора. |
abstract ShortVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями второго входного вектора, с выбором элементов каналов, управляемых маской. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значениями двух вещаемых скаляров. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значениями двух вещаемых скаляров, с выбором элементов каналов, управляемых маской. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и вещаемого скаляра. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и вещаемого скаляра, с выбором элементов каналов, управляемых маской. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и вещаемого скаляра. |
final ShortVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и вещаемого скаляра, с выбором элементов каналов, управляемых маской. |
abstract ShortVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора с каналами второго и третьего входных векторов. |
abstract ShortVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора с каналами второго и третьего входных векторов, с выбором элементов каналов, управляемых маской. |
abstract ShortVector |
lanewise |
Операция над значениями каналов этого вектора. |
abstract ShortVector |
lanewise |
Операция над значениями каналов этого вектора, с выбором элементов каналов, управляемых маской. |
final VectorMask |
lt |
Проверяет, меньше ли этот вектор, чем входной скаляр. |
final VectorMask |
maskAll |
Проверяет, меньше ли этот вектор, чем другой входной вектор. |
final VectorMask |
max |
Возвращает маску того же типа, что и этот вектор, где каждый канал установлен или сброшен в соответствии с заданным одиночным булевым значением, которое вещается на все каналы. |
final ShortVector |
max |
Вычисляет большее из этого вектора и вещаемого входного скаляра. |
final ShortVector |
min |
Вычисляет большее из этого вектора и второго входного вектора. |
final ShortVector |
min |
Вычисляет меньшее из этого вектора и вещаемого входного скаляра. |
final ShortVector |
mul |
Вычисляет меньшее из этого вектора и второго входного вектора. |
final ShortVector |
mul |
Умножает этот вектор на вещаемый входной скаляр. |
final ShortVector |
mul |
Умножает этот вектор на вещаемый входной скаляр, выбирая элементы каналов, управляемые маской. |
final ShortVector |
mul |
Умножает этот вектор на второй входной вектор. |
final ShortVector |
neg() |
Умножает этот вектор на второй входной вектор под управлением маски. |
final ShortVector |
not() |
Меняет знак этого вектора. |
final ShortVector |
or |
Вычисляет побитовое логическое дополнение ( ~) этого вектора. |
final ShortVector |
or |
Вычисляет побитовое логическое дизъюнкцию ( |) этого вектора и скаляра. |
final ShortVector |
rearrange |
Вычисляет побитовое логическое дизъюнкцию ( |) этого вектора и второго входного вектора. |
abstract ShortVector |
rearrange |
Переупорядочивает элементы каналов этого вектора, выбирая каналы под управлением определенной перестановки. |
abstract ShortVector |
reduceLanes |
Переупорядочивает элементы каналов двух векторов, выбирая каналы под управлением определенной перестановки, используя как обычные, так и исключительные индексы в перестановке для управления данными. |
abstract ShortVector |
reduceLanes |
Переупорядочивает элементы каналов этого вектора, выбирая каналы под управлением определенной перестановки и маски. |
abstract short |
reinterpretAsBytes() |
Возвращает значение, аккумулированное со всех каналов этого вектора. |
abstract short |
reinterpretAsDoubles() |
Возвращает значение, аккумулированное из выбранных каналов этого вектора, управляемых маской. |
final ByteVector |
double |
Представляет этот вектор как вектор той же формы и содержимого, но с типом канала byte, где байты извлекаются из каналов в соответствии с порядком little-endian. |
DoubleVector |
double |
Переинтерпретирует этот вектор как вектор той же формы и содержимого, но с типом канала double, где каналы собираются из последовательных байтов в соответствии с порядком little-endian. |
FloatVector |
reinterpretAsFloats() |
Переосмысливает этот вектор как вектор той же формы и содержимого, но с типом проходов float, где проходы собираются из последовательных байтов в соответствии с порядком little-endian. |
IntVector |
reinterpretAsInts() |
Переосмысливает этот вектор как вектор той же формы и содержимого, но с типом проходов int, где проходы собираются из последовательных байтов в соответствии с порядком little-endian. |
LongVector |
reinterpretAsLongs() |
Переосмысливает этот вектор как вектор той же формы и содержимого, но с типом проходов long, где проходы собираются из последовательных байтов в соответствии с порядком little-endian. |
ShortVector |
reinterpretAsShorts() |
Переосмысливает этот вектор как вектор той же формы и содержимого, но с типом проходов short, где проходы собираются из последовательных байтов в соответствии с порядком little-endian. |
abstract ShortVector |
selectFrom |
Используя значения индексов, хранящиеся в проходах этого вектора, собирает значения, хранящиеся во втором векторе v. |
abstract ShortVector |
selectFrom |
Используя значения, хранящиеся в проходах этого вектора, собирает значения, хранящиеся во втором векторе v1 и третьем векторе v2. |
abstract ShortVector |
selectFrom |
Используя значения индексов, хранящиеся в проходах этого вектора, собирает значения из второго вектора, под управлением маски. |
abstract ShortVector |
slice |
Вырезает фрагмент смежных проходов, начиная с заданного origin прохода в текущем векторе. |
abstract ShortVector |
slice |
Вырезает фрагмент смежных проходов, начиная с заданного origin прохода в текущем векторе и продолжая (при необходимости) в непосредственно последующий вектор. |
final ShortVector |
slice |
Вырезает фрагмент смежных проходов под управлением маски, начиная с заданного origin прохода в текущем векторе и продолжая (при необходимости) в непосредственно последующий вектор. |
final VectorSpecies |
species() |
Возвращает вид этого вектора. |
final ShortVector |
sub |
Вычитает входной скаляр из этого вектора. |
final ShortVector |
sub |
Вычитает входной скаляр из этого вектора под управлением маски. |
final ShortVector |
sub |
Вычитает второй входной вектор из этого вектора. |
final ShortVector |
sub |
Вычитает второй входной вектор из этого вектора под управлением маски. |
abstract VectorMask |
test |
Проверяет проходы этого вектора в соответствии с заданной операцией. |
abstract VectorMask |
test |
Проверяет выбранные проходы этого вектора в соответствии с заданной операцией. |
final short[] |
toArray() |
Возвращает массив типа short[], содержащий все значения проходов. |
final double[] |
toDoubleArray() |
Возвращает массив double[], содержащий все значения проходов, преобразованные к типу double. |
final int[] |
toIntArray() |
Возвращает массив int[], содержащий все значения проходов, преобразованные к типу int. |
final long[] |
toLongArray() |
Возвращает массив long[], содержащий все значения проходов, преобразованные к типу long. |
final String |
toString() |
Возвращает строковое представление этого вектора в формате "[0,1,2...]", сообщая значения проходов этого вектора в порядке проходов. |
abstract ShortVector |
unslice |
Инвертирует slice(), вставляя текущий вектор как срез в «фоновый» ввод с нулевыми значениями проходов. |
abstract ShortVector |
unslice |
Инвертирует slice(), вставляя текущий вектор как срез в другой «фоновый» входной вектор, который рассматривается как один или другой вход в гипотетическую последующую операцию slice(). |
abstract ShortVector |
unslice |
Инвертирует slice(), вставляя (под управлением маски) текущий вектор как срез в другой «фоновый» входной вектор, который рассматривается как один или другой вход в гипотетическую последующую операцию slice(). |
final Vector |
viewAsFloatingLanes() |
Представляет этот вектор как вектор той же формы, длины и содержимого, но с типом прохода, который является типом с плавающей точкой. |
final ShortVector |
viewAsIntegralLanes() |
Представляет этот вектор как вектор той же формы, длины и содержимого, но с типом прохода, который не является типом с плавающей точкой. |
abstract ShortVector |
withLane |
Заменяет элемент прохода этого вектора в индексе прохода i значением e. |
static ShortVector |
zero |
Возвращает вектор заданного вида, где все элементы проходов установлены в ноль, значение по умолчанию для примитивных типов. |
Методы, объявленные в классе jdk.incubator.vector.Vector
bitSize, byteSize, compare, elementSize, elementType, length, reduceLanesToLong, reduceLanesToLong, reinterpretShape, shape, toShuffle
Краткое описание полей
SPECIES_64
public static final VectorSpecies<Short> SPECIES_64
ShortVectors of VectorShape.S_64_BIT.SPECIES_128
public static final VectorSpecies<Short> SPECIES_128
ShortVectors of VectorShape.S_128_BIT.SPECIES_256
public static final VectorSpecies<Short> SPECIES_256
ShortVectors of VectorShape.S_256_BIT.SPECIES_512
public static final VectorSpecies<Short> SPECIES_512
ShortVectors of VectorShape.S_512_BIT.SPECIES_MAX
public static final VectorSpecies<Short> SPECIES_MAX
ShortVectors of VectorShape.S_Max_BIT.SPECIES_PREFERRED
public static final VectorSpecies<Short> SPECIES_PREFERRED
ShortVectors. Предпочтительный species - это species максимального размера в битах для платформы.Подробное описание методов
zero
public static ShortVector zero(VectorSpecies<Short> species)
- Параметры:
-
species- species нужного нулевого вектора - Возвращает:
- нулевой вектор
broadcast
public abstract ShortVector broadcast(short e)
e. Содержимое текущего вектора отбрасывается; для этой операции важен только species. Этот метод возвращает значение этого выражения: ShortVector.broadcast(this.species(), e).
- API Note:
- В отличие от аналогичного метода с именем
broadcast()в супертипеVector, этому методу не нужно проверять свой аргумент и он не может выброситьIllegalArgumentException. Поэтому этот метод предпочтительнее метода супертипа. - Параметры:
-
e- значение для широковещательной рассылки - Возвращает:
- вектор, где все элементы полосы установлены в примитивное значение
e - См. также:
broadcast
public static ShortVector broadcast(VectorSpecies<Short> species, short e)
e.- Параметры:
-
species- species нужного вектора -
e- значение для широковещательной рассылки - Возвращает:
- вектор, где все элементы полосы установлены в примитивное значение
e - См. также:
broadcast
public abstract ShortVector broadcast(long e)
e. Содержимое текущего вектора отбрасывается; для этой операции важен только species. Этот метод возвращает значение этого выражения: EVector.broadcast(this.species(), (ETYPE)e), где EVector - это класс вектора, специфичный для типа элемента ETYPE этого вектора.
Значение long e должно быть точно представимо ETYPE species этого вектора, так что e==(long)(ETYPE)e. Если это правило нарушено, проблема не обнаруживается статически, но во время выполнения выбрасывается IllegalArgumentException. Таким образом, этот метод несколько ослабляет статическую проверку типов для непосредственных констант и других скаляров, но компенсирует это, повышая выразительность универсального API. Обратите внимание, что значение e в диапазоне [-128..127] всегда допустимо, так как каждый ETYPE будет принимать каждое значение byte.
- Указано в:
-
broadcastв классеVector<Short> - API Note:
- При работе с подтипами векторов, такими как
ShortVector, обычно выбирается более строго типизированный метод. Его можно явно выбрать с помощью приведения типа:v.broadcast((short)e). Два выражения дадут численно идентичные результаты. - Параметры:
-
e- значение для широковещательной рассылки - Возвращает:
- вектор, где все элементы полосы установлены в примитивное значение
e - См. также:
broadcast
public static ShortVector broadcast(VectorSpecies<Short> species, long e)
e. Значение long должно быть точно представимо ETYPE species вектора, так что e==(long)(ETYPE)e.- Параметры:
-
species- species нужного вектора -
e- значение для широковещательной рассылки - Возвращает:
- вектор, где все элементы полосы установлены в примитивное значение
e - Выбрасывает:
-
IllegalArgumentException- если заданное значениеlongне может быть представленоETYPEвектора - См. также:
lanewise
public abstract ShortVector lanewise(VectorOperators.Unary op)
lanewise
public abstract ShortVector lanewise(VectorOperators.Unary op, VectorMask<Short> m)
lanewise
public abstract ShortVector lanewise(VectorOperators.Binary op, Vector<Short> v)
lanewise
public abstract ShortVector lanewise(VectorOperators.Binary op, Vector<Short> v, VectorMask<Short> m)
lanewise
public final ShortVector lanewise(VectorOperators.Binary op, short e)
this.lanewise(op, this.broadcast(e)).- Параметры:
-
op- операция, используемая для обработки значений каналов -
e- входной скаляр - Возвращает:
- результат применения операции по каналам к двум входным векторам
- Выбрасывает:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Binary op, short e, VectorMask<Short> m)
this.lanewise(op, this.broadcast(e), m).- Параметры:
-
op- операция, используемая для обработки значений каналов -
e- входной скаляр -
m- маска, управляющая выбором каналов - Возвращает:
- результат применения операции по каналам к входному вектору и скаляру
- Выбрасывает:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Binary op, long e)
this.lanewise(op, this.broadcast(e)). - Указано в:
-
lanewiseв классеVector<Short> - Примечание API:
- При работе с подтипами векторов, такими как
ShortVector, обычно выбирается метод с более сильной типизацией более сильный типизированный метод. Его можно явно выбрать с помощью приведения типа:v.lanewise(op,(short)e). Два выражения дадут численно идентичные результаты. - Параметры:
-
op- операция, используемая для объединения значений каналов -
e- входной скаляр - Возвращает:
- результат применения операции по каналам к входному вектору и скаляру
- См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Binary op, long e, VectorMask<Short> m)
this.lanewise(op, this.broadcast(e), m). - Указано в:
-
lanewiseв классеVector<Short> - Примечание API:
- При работе с подтипами векторов, такими как
ShortVector, обычно выбирается метод с более сильной типизацией более сильный типизированный метод. Его можно явно выбрать с помощью приведения типа:v.lanewise(op,(short)e,m). Два выражения дадут численно идентичные результаты. - Параметры:
-
op- операция, используемая для объединения значений каналов -
e- входной скаляр -
m- маска, управляющая выбором каналов - Возвращает:
- результат применения операции по каналам к входному вектору и скаляру
- См. также:
lanewise
public abstract ShortVector lanewise(VectorOperators.Ternary op, Vector<Short> v1, Vector<Short> v2)
lanewise
public abstract ShortVector lanewise(VectorOperators.Ternary op, Vector<Short> v1, Vector<Short> v2, VectorMask<Short> m)
lanewise
public final ShortVector lanewise(VectorOperators.Ternary op, short e1, short e2)
this.lanewise(op, this.broadcast(e1), this.broadcast(e2)).- Параметры:
-
op- операция, используемая для объединения значений каналов -
e1- первый входной скаляр -
e2- второй входной скаляр - Возвращает:
- результат применения операции по каналам к входному вектору и скалярам
- Выбрасывает:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Ternary op, short e1, short e2, VectorMask<Short> m)
this.lanewise(op, this.broadcast(e1), this.broadcast(e2), m).- Параметры:
-
op- операция, используемая для комбинирования значений элементов -
e1- первый входной скаляр -
e2- второй входной скаляр -
m- маска, определяющая выбор элементов - Возвращает:
- результат применения операции по элементам к входному вектору и скалярам
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Ternary op, Vector<Short> v1, short e2)
this.lanewise(op, v1, this.broadcast(e2)).- Параметры:
-
op- операция, используемая для комбинирования значений элементов -
v1- другой входной вектор -
e2- входной скаляр - Возвращает:
- результат применения операции по элементам к входным векторам и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Ternary op, Vector<Short> v1, short e2, VectorMask<Short> m)
this.lanewise(op, v1, this.broadcast(e2), m).- Параметры:
-
op- операция, используемая для комбинирования значений элементов -
v1- другой входной вектор -
e2- входной скаляр -
m- маска, определяющая выбор элементов - Возвращает:
- результат применения операции по элементам к входным векторам и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Ternary op, short e1, Vector<Short> v2)
this.lanewise(op, this.broadcast(e1), v2).- Параметры:
-
op- операция, используемая для комбинирования значений элементов -
e1- входной скаляр -
v2- другой входной вектор - Возвращает:
- результат применения операции по элементам к входным векторам и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ShortVector lanewise(VectorOperators.Ternary op, short e1, Vector<Short> v2, VectorMask<Short> m)
this.lanewise(op, this.broadcast(e1), v2, m).- Параметры:
-
op- операция, используемая для комбинирования значений элементов -
e1- входной скаляр -
v2- другой входной вектор -
m- маска, определяющая выбор элементов - Возвращает:
- результат применения операции по элементам к входным векторам и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
add
public final ShortVector add(Vector<Short> v)
lanewise(ADD, v). Как полная именованная операция, этот метод имеет перегрузки с маской и без маски, и (в подклассах) также имеет перегрузки со скаляром-вещанием (с маской и без маски).
add
public final ShortVector add(short e)
lanewise(ADD, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результат сложения каждого элемента этого вектора со скаляром
- См. также:
add
public final ShortVector add(Vector<Short> v, VectorMask<Short> m)
lanewise(ADD, v, m). Как полная именованная операция, этот метод имеет перегрузки с маской и без маски, и (в подклассах) также имеет перегрузки со скаляром-вещанием (с маской и без маски).
add
public final ShortVector add(short e, VectorMask<Short> m)
+) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(ADD, s, m).- Параметры:
-
e- входной скаляр -
m- маска, управляющая выбором дорожки - Возвращает:
- результат сложения каждой дорожки этого вектора со скаляром
- См. также:
sub
public final ShortVector sub(Vector<Short> v)
-) к каждой паре соответствующих значений дорожек. Этот метод также эквивалентен выражению lanewise(SUB, v). В качестве полнофункциональной именованной операции этот метод доступен в перегрузках с масками и без масок, а также (в подклассах) в перегрузках скалярного широковещания (с масками и без масок).
sub
public final ShortVector sub(short e)
-) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(SUB, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результат вычитания скаляра из каждой дорожки этого вектора
- См. также:
sub
public final ShortVector sub(Vector<Short> v, VectorMask<Short> m)
-) к каждой паре соответствующих значений дорожек. Для любой дорожки, не установленной в маске, примитивная операция подавляется, и этот вектор сохраняет исходное значение, хранящееся в этой дорожке. Этот метод также эквивалентен выражению lanewise(SUB, v, m). В качестве полнофункциональной именованной операции этот метод доступен в перегрузках с масками и без масок, а также (в подклассах) в перегрузках скалярного широковещания (с масками и без масок).
sub
public final ShortVector sub(short e, VectorMask<Short> m)
-) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(SUB, s, m).- Параметры:
-
e- входной скаляр -
m- маска, управляющая выбором дорожки - Возвращает:
- результат вычитания скаляра из каждой дорожки этого вектора
- См. также:
mul
public final ShortVector mul(Vector<Short> v)
*) к каждой паре соответствующих значений дорожек. Этот метод также эквивалентен выражению lanewise(MUL, v). В качестве полнофункциональной именованной операции этот метод доступен в перегрузках с масками и без масок, а также (в подклассах) в перегрузках скалярного широковещания (с масками и без масок).
mul
public final ShortVector mul(short e)
*) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(MUL, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результат умножения этого вектора на данный скаляр
- См. также:
mul
public final ShortVector mul(Vector<Short> v, VectorMask<Short> m)
*) к каждой паре соответствующих значений дорожек. Для любой дорожки, не установленной в маске, примитивная операция подавляется, и этот вектор сохраняет исходное значение, хранящееся в этой дорожке. Этот метод также эквивалентен выражению lanewise(MUL, v, m). В качестве полнофункциональной именованной операции этот метод доступен в перегрузках с масками и без масок, а также (в подклассах) в перегрузках скалярного широковещания (с масками и без масок).
mul
public final ShortVector mul(short e, VectorMask<Short> m)
*) к каждому каналу. Этот метод также эквивалентен выражению lanewise(MUL, s, m).- Параметры:
-
e- входной скаляр -
m- маска, управляющая выбором каналов - Возвращает:
- результат умножения каждого канала этого вектора на скаляр
- См. также:
div
public final ShortVector div(Vector<Short> v)
/) к каждой паре соответствующих значений каналов. Этот метод также эквивалентен выражению lanewise(DIV, v). В качестве полноценной именованной операции этот метод имеет перегрузки с масками и без масок, а также (в подклассах) имеет перегрузки со скалярным транслированием (с масками и без масок).
div
public final ShortVector div(short e)
/) к каждому каналу. Этот метод также эквивалентен выражению lanewise(DIV, e).- Примечание API:
- Если существует делитель ноль,
ArithmeticExceptionбудет брошен. - Параметры:
-
e- входной скаляр - Возвращает:
- результат деления каждого канала этого вектора на скаляр
- См. также:
div
public final ShortVector div(Vector<Short> v, VectorMask<Short> m)
/) к каждой паре соответствующих значений каналов. Для любого канала, не установленного в маске, примитивная операция подавляется, и этот вектор сохраняет исходное значение, хранящееся в этом канале. Этот метод также эквивалентен выражению lanewise(DIV, v, m). В качестве полноценной именованной операции этот метод имеет перегрузки с масками и без масок, а также (в подклассах) имеет перегрузки со скалярным транслированием (с масками и без масок).
div
public final ShortVector div(short e, VectorMask<Short> m)
/) к каждому каналу. Этот метод также эквивалентен выражению lanewise(DIV, s, m).- Примечание API:
- Если существует делитель ноль,
ArithmeticExceptionбудет брошен. - Параметры:
-
e- входной скаляр -
m- маска, управляющая выбором каналов - Возвращает:
- результат деления каждого канала этого вектора на скаляр
- См. также:
min
min
public final ShortVector min(short e)
Math.min() к каждой паре соответствующих значений каналов. Этот метод также эквивалентен выражению lanewise(MIN, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результат умножения этого вектора на заданный скаляр
- См. также:
max
public final ShortVector max(Vector<Short> v)
Math.max() к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(MAX, v). Это не полная именованная операция, как add(). Маскированная версия этой операции не доступна напрямую, но может быть получена с помощью маскированной версии lanewise. Подклассы определяют дополнительную перегрузку этого метода с скалярным вещанием.
max
public final ShortVector max(short e)
Math.max() к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(MAX, e).- Parameters:
-
e- входной скаляр - Returns:
- результат умножения этого вектора на заданный скаляр
- See Also:
and
public final ShortVector and(Vector<Short> v)
&) этого вектора и второго входного вектора. Это бинарная операция по элементам, которая применяет примитивную побитовую операцию "и" (&) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(AND, v). Это не полная именованная операция, как add. Маскированная версия этой операции не доступна напрямую, но может быть получена с помощью маскированной версии lanewise.
- Parameters:
-
v- второй входной вектор - Returns:
- побитовое
&этого вектора и второго входного вектора - See Also:
and
public final ShortVector and(short e)
&) этого вектора и скаляра. Это бинарная операция по элементам, которая применяет примитивную побитовую операцию "и" (&) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(AND, e).- Parameters:
-
e- входной скаляр - Returns:
- побитовое
&этого вектора и скаляра - See Also:
or
public final ShortVector or(Vector<Short> v)
|) этого вектора и второго входного вектора. Это бинарная операция по элементам, которая применяет примитивную побитовую операцию "или" (|) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(AND, v). Это не полная именованная операция, как add. Маскированная версия этой операции не доступна напрямую, но может быть получена с помощью маскированной версии lanewise.
- Parameters:
-
v- второй входной вектор - Returns:
- побитовое
|этого вектора и второго входного вектора - See Also:
or
public final ShortVector or(short e)
|) этого вектора и скаляра. Это бинарная операция по элементам, которая применяет примитивную побитовую операцию "или" (|) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(OR, e).- Parameters:
-
e- входной скаляр - Returns:
- побитовое
|этого вектора и скаляра - See Also:
neg
abs
not
public final ShortVector not()
~) этого вектора. Это операция над каналами, которая применяет примитивную побитовую операцию "not" (~) к каждому значению канала. Этот метод также эквивалентен выражению lanewise(NOT). Это не полная операция с именем, как add. Маскированная версия этой операции не доступна напрямую, но может быть получена с помощью маскированной версии lanewise.
- Возвращает:
- побитовое дополнение
~этого вектора - См. также:
eq
public final VectorMask<Short> eq(Vector<Short> v)
==) к каждой паре соответствующих значений каналов. Результат такой же, как compare(VectorOperators.EQ, v). eq
public final VectorMask<Short> eq(short e)
==) к каждому каналу. Результат такой же, как compare(VectorOperators.Comparison.EQ, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результирующая маска проверки, если этот вектор равен
e - См. также:
lt
public final VectorMask<Short> lt(Vector<Short> v)
<) к каждому каналу. Результат такой же, как compare(VectorOperators.LT, v). lt
public final VectorMask<Short> lt(short e)
<) к каждому каналу. Результат такой же, как compare(VectorOperators.LT, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результат маски проверки, если этот вектор меньше входного скаляра
- См. также:
test
public abstract VectorMask<Short> test(VectorOperators.Test op)
test
public abstract VectorMask<Short> test(VectorOperators.Test op, VectorMask<Short> m)
test(op).and(m). - Определено в:
-
testв классеVector<Short> - Параметры:
-
op- операция, используемая для проверки значений каналов -
m- маска, контролирующая выбор каналов - Возвращает:
- результат маски проверки каналов этого вектора в соответствии с выбранным оператором проверки, и только в каналах, выбранных маской
- См. также:
compare
public abstract VectorMask<Short> compare(VectorOperators.Comparison op, Vector<Short> v)
compare
public abstract VectorMask<Short> compare(VectorOperators.Comparison op, short e)
Результат такой же, как compare(op, broadcast(species(), e)). То есть, скаляр можно рассматривать как векторизованный в вектор того же типа, а затем сравнивать с исходным вектором с использованием выбранной операции сравнения.
- Параметры:
-
op- операция, используемая для сравнения значений каналов -
e- входной скаляр - Возвращает:
- результат маски проверки по каналам, если этот вектор сравнивается со входом, в соответствии с выбранным оператором сравнения
- См. также:
compare
public final VectorMask<Short> compare(VectorOperators.Comparison op, short e, VectorMask<Short> m)
compare(op,s).and(m).- Параметры:
-
op- операция, используемая для сравнения значений каналов -
e- входной скаляр -
m- маска, контролирующая выбор каналов - Возвращает:
- результат маски проверки по каналам, если этот вектор сравнивается со входом, в соответствии с выбранным оператором сравнения, и только в каналах, выбранных маской
- См. также:
compare
public abstract VectorMask<Short> compare(VectorOperators.Comparison op, long e)
Результат такой же, как this.compare(op, this.broadcast(e)). То есть скаляр можно рассматривать как широковещательный для вектора того же вида, а затем сравнить с исходным вектором, используя выбранную операцию сравнения.
compare
public final VectorMask<Short> compare(VectorOperators.Comparison op, long e, VectorMask<Short> m)
compare(op,e).and(m).- Specified by:
-
comparein classVector<Short> - Parameters:
-
op- операция, используемая для сравнения значений элементов -
e- скалярный вход -
m- маска, контролирующая выбор элементов - Returns:
- маска результата проверки на уровне элементов, сравнивает ли этот вектор с входом, в соответствии с выбранным оператором сравнения, и только в элементах, выбранных маской
- See Also:
blend
public abstract ShortVector blend(Vector<Short> v, VectorMask<Short> m)
- Для любого элемента, установленного в маске, новое значение элемента берется из второго входного вектора и заменяет любое значение в этом элементе этого вектора.
- Для любого элемента, не установленного в маске, замена подавляется, и этот вектор сохраняет исходное значение, хранящееся в этом элементе.
Vector<E> a = ...;
VectorSpecies<E> species = a.species();
Vector<E> b = ...;
b.check(species);
VectorMask<E> m = ...;
ETYPE[] ar = a.toArray();
for (int i = 0; i < ar.length; i++) {
if (m.laneIsSet(i)) {
ar[i] = b.lane(i);
}
}
return EVector.fromArray(s, ar, 0);
addIndex
public abstract ShortVector addIndex(int scale)
N вычисляет масштабированное индексное значение N*scale и добавляет его к значению, уже находящемуся в элементе N текущего вектора. Масштаб не должен быть таким большим, а размер элемента не должен быть таким маленьким, чтобы при вычислении любого из N*scale или VLENGTH*scale произошло переполнение, когда результат представлен с использованием типа элемента вектора ETYPE.
Следующий псевдокод иллюстрирует это поведение:
Vector<E> a = ...;
VectorSpecies<E> species = a.species();
ETYPE[] ar = a.toArray();
for (int i = 0; i < ar.length; i++) {
long d = (long)i * scale;
if (d != (ETYPE) d) throw ...;
ar[i] += (ETYPE) d;
}
long d = (long)ar.length * scale;
if (d != (ETYPE) d) throw ...;
return EVector.fromArray(s, ar, 0);
blend
public final ShortVector blend(short e, VectorMask<Short> m)
blend(broadcast(e),m).- Parameters:
-
e- скалярный вход, содержащий значение заменяющего элемента -
m- маска, контролирующая выбор элемента скаляра - Returns:
- результат смешивания элементов элементов этого вектора со скалярным значением
blend
public final ShortVector blend(long e, VectorMask<Short> m)
blend(broadcast(e),m).slice
public abstract ShortVector slice(int origin, Vector<Short> v1)
origin элемента в текущем векторе и продолжая (по мере необходимости) в непосредственно последующий вектор. Блок VLENGTH элементов извлекается в свой собственный вектор и возвращается. Это операция между элементами, которая перемещает элементы элементов вперед, из текущего вектора и второго вектора. Оба вектора можно рассматривать как объединенную "фоновую" последовательность длиной 2*VLENGTH, из которой извлекается срез. Элемент с номером N в выходном векторе копируется из элемента origin+N входного вектора, если этот элемент существует, в противном случае из элемента origin+N-VLENGTH второго вектора (который гарантированно существует).
Значение origin должно находиться в диапазоне включительно 0..VLENGTH. В качестве крайних случаев, v.slice(0,w) и v.slice(VLENGTH,w) возвращают v и w соответственно.
- Parameters:
-
origin- первый входной элемент для передачи в срез -
v1- второй вектор, логически конкатенированный с первым, перед взятием среза (если он опущен, он по умолчанию равен нулю) - Returns:
- непрерывный срез из
VLENGTHэлементов, взятый из этого вектора, начиная с указанного начала, и продолжая (при необходимости) во второй вектор - See Also:
slice
public final ShortVector slice(int origin, Vector<Short> w, VectorMask<Short> m)
origin элемента в текущем векторе и продолжая (по мере необходимости) в непосредственно последующий вектор. Блок VLENGTH элементов извлекается в свой собственный вектор и возвращается. Результирующий вектор будет нулевым во всех элементах, не установленных в данной маске. Элементы, установленные в маске, будут содержать данные, скопированные из выбранных элементов this или v1. Это операция между элементами, которая перемещает элементы элементов вперед, из текущего вектора и второго вектора. Оба вектора можно рассматривать как объединенную "фоновую" последовательность длиной 2*VLENGTH, из которой извлекается срез. Результирующий результат равен выражению broadcast(0).blend(slice(origin,v1),m).
- Specified by:
-
slicein classVector<Short> - Parameters:
-
origin- первый входной элемент для передачи в срез -
w- второй вектор, логически конкатенированный с первым, перед взятием среза (если он опущен, он по умолчанию равен нулю) -
m- маска, контролирующая выбор элемента в результирующий вектор - Returns:
- непрерывный срез из
VLENGTHэлементов, взятый из этого вектора, начиная с указанного начала, и продолжая (при необходимости) во второй вектор - See Also:
slice
public abstract ShortVector slice(int origin)
origin полосы в текущем векторе. Блок из VLENGTH полос, возможно, дополненный нулевыми полосами, извлекается в собственный вектор и возвращается. Это удобный метод, который вырезает из одного вектора на расширенном фоне из нулевых полос. Он эквивалентен slice
(origin, broadcast(0)). Его также можно рассматривать просто как сдвиг полос с последующих на предыдущие полосы, при этом нули заполняют освободившиеся полосы в конце вектора. В этом представлении, количество сдвигов равно origin. - Параметры:
-
origin- первая входная полоса для передачи в срез - Возвращает:
- последние
VLENGTH-originвходные полосы, размещенные, начиная с первой полосы вывода, дополненные нулями в конце - См. также:
unslice
public abstract ShortVector unslice(int origin, Vector<Short> w, int part)
slice() операцию. Это операция над полосами, которая переупорядочивает элементы полос текущего вектора к концу и вставляет их в логическую пару фоновых векторов. Однако будет возвращён только один из пары. Фон формируется путем дублирования второго входного вектора. (Однако вывод никогда не будет содержать два дубликата из одной входной полосы.) Полоса с номером N во входном векторе копируется в полосу origin+N первого фонового вектора, если эта полоса существует, иначе в полосу origin+N-VLENGTH второго фонового вектора (существование которой гарантировано). Первый или второй фоновый вектор, обновленный вставленным срезом, возвращается. Число part ноль или единица выбирает первый или второй обновлённый фоновый вектор.
Значение origin должно находиться в диапазоне от 0..VLENGTH. В качестве крайних случаев, v.unslice(0,w,0) и v.unslice(VLENGTH,w,1) оба возвращают v, в то время как v.unslice(0,w,1) и v.unslice(VLENGTH,w,0) оба возвращают w.
- Определено в:
-
unsliceв классеVector<Short> - Параметры:
-
origin- первая выходная полоса для получения среза -
w- фоновый вектор, который (в двух копиях) получит вставленный срез -
part- номер части результата (либо ноль, либо единица) - Возвращает:
- либо первая, либо вторая часть пары фоновых векторов
w, обновленные путём вставки этого вектора в указанную позицию - См. также:
unslice
public abstract ShortVector unslice(int origin, Vector<Short> w, int part, VectorMask<Short> m)
slice() операцию. Это операция над полосами, которая переупорядочивает элементы полос текущего вектора вперёд и вставляет его полосы (если они выбраны маской) в логическую пару фоновых векторов. Как и в случае с немаскированным вариантом этого метода, будет возвращён только один из пары, как указано числом part. Для каждой полосы N, выбранной маской, значение полосы копируется в полосу origin+N первого фонового вектора, если эта полоса существует, иначе в полосу origin+N-VLENGTH второго фонового вектора (существование которого гарантировано). Полосы фона сохраняют свои исходные значения, если соответствующие входные полосы N не установлены в маске. Первый или второй фоновый вектор, обновленный установленными полосами вставленного среза, возвращается. Число part ноль или единица выбирает первый или второй обновлённый фоновый вектор.
- Определено в:
-
unsliceв классеVector<Short> - Параметры:
-
origin- первая выходная полоса для получения среза -
w- фоновый вектор, который (в двух копиях) получит вставленный срез, если они установлены вm -
part- номер части результата (либо ноль, либо единица) -
m- маска, управляющая выбором полос из текущего вектора - Возвращает:
- либо первая, либо вторая часть пары фоновых векторов
w, обновленные вставкой выбранных полос этого вектора в указанную позицию - См. также:
unslice
public abstract ShortVector unslice(int origin)
unslice() методов, этот метод возвращает только первую из пары фоновых векторов. Это удобный метод, который возвращает результат unslice
(origin, broadcast(0), 0). Его также можно рассматривать просто как сдвиг полос с предыдущих на последующие полосы, при этом нули заполняют освободившиеся полосы в начале вектора. В этом представлении, количество сдвигов равно origin. rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> shuffle)
N перестановщика и для каждого индекса источника полосы I=s.wrapIndex(s.laneSource(N)) в перестановщике выходная полоса N получает значение из входного вектора в полосе I. rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> s, VectorMask<Short> m)
N перестановщика и для каждого индекса источника полосы I=s.wrapIndex(s.laneSource(N)) в перестановщике выходная полоса N получает значение из входного вектора в полосе I, если маска установлена. В противном случае выходная полоса N устанавливается в ноль. Этот метод возвращает значение этого псевдокода:
Vector<E> r = this.rearrange(s);
return broadcast(0).blend(r, m);
перестановка
public abstract ShortVector rearrange(VectorShuffle<Short> s, Vector<Short> v)
v). Для каждого прохода N перестановки и для каждого индекса источника прохода I=s.laneSource(N) в перестановке выходной проход N получает значение из первого вектора на проходе I, если I>=0. В противном случае, исключительный индекс I оборачивается путём добавления VLENGTH к нему и используется для индексации второго вектора на индексе I+VLENGTH. Этот метод возвращает значение данного псевдокода:
Vector<E> r1 = this.rearrange(s.wrapIndexes());
// or else: r1 = this.rearrange(s, s.laneIsValid());
Vector<E> r2 = v.rearrange(s.wrapIndexes());
return r2.blend(r1,s.laneIsValid());
сжать
public abstract ShortVector compress(VectorMask<Short> m)
N маски, если маска на проходе N установлена, элемент на проходе N входного вектора выбирается и сохраняется в выходной вектор непрерывно, начиная с прохода 0. Все оставшиеся верхние проходы выходного вектора, если таковые имеются, устанавливаются в ноль. расширить
public abstract ShortVector expand(VectorMask<Short> m)
N маски, если маска на проходе N установлена, следующий смежный элемент входного вектора, начиная с прохода 0, выбирается и сохраняется в выходной вектор на проходе N. Все оставшиеся проходы выходного вектора, если таковые имеются, устанавливаются в ноль.selectFrom
public abstract ShortVector selectFrom(Vector<Short> v)
v. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам в текущем векторе. Это операция между проходами, которая переупорядочивает элементы проходов аргументного вектора под управлением этого вектора. Для каждого прохода N этого вектора и для каждого значения прохода I=wrapIndex(this.lane(N)) в этом векторе выходной проход N получает значение из аргументного вектора на проходе I. Таким образом, результат содержит только значения, хранящиеся в аргументном векторе v, но представленные в порядке, зависящем от значений индексов в this. Результат такой же, как в выражении v.rearrange(this.toShuffle()).- Указано в:
-
selectFromв классеVector<Short> - Параметры:
-
v- вектор, предоставляющий значения результата - Возвращает:
- переупорядочение элементов проходов
v - См. также:
selectFrom
public abstract ShortVector selectFrom(Vector<Short> s, VectorMask<Short> m)
v. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам в текущем векторе. Проходы, которые не установлены в маске, получают ноль вместо значения из таблицы. Это операция между проходами, которая переупорядочивает элементы проходов аргументного вектора под управлением этого вектора и маски. Результат такой же, как в выражении v.rearrange(this.toShuffle(), m).- Указано в:
-
selectFromв классеVector<Short> - Параметры:
-
s- вектор, предоставляющий значения результата -
m- маска, контролирующая выбор изv - Возвращает:
- переупорядочение элементов проходов
v - См. также:
selectFrom
public abstract ShortVector selectFrom(Vector<Short> v1, Vector<Short> v2)
v1 и третьего вектора v2. Таким образом, второй и третий векторы служат таблицей, элементы которой выбираются по индексам в этом векторе. Это операция между проходами, которая переупорядочивает элементы проходов аргументных векторов под управлением этого вектора. Для каждого прохода N этого вектора и для каждого значения прохода I=wrapIndex(this.lane(N) в этом векторе выходной проход N получает значение из второго вектора на проходе I, если I < VLENGTH. В противном случае, выходной проход N получает значение из третьего вектора на проходе I - VLENGTH. Здесь VLENGTH является результатом this.length(), и для целых значений wrapIndex вычисляет результат Math.floorMod(E, 2 * VLENGTH), где E — индекс для оборачивания. Пока VLENGTH является степенью двойки, результат также равен E & (2 * VLENGTH - 1). Для чисел с плавающей точкой wrapIndex вычисляет Math.floorMod(convert(E), 2 * VLENGTH), где convert преобразует значение с плавающей точкой в целое значение с тем же количеством битов представления — как при преобразовании значения double в long ((long)doubleVal) или float в int ((int)floatVal). Таким образом, результат содержит только значения, хранящиеся в аргументных векторах v1 и v2, но представленные в порядке, зависящем от значений индексов в this. Результат для целых значений такой же, как выражение v1.rearrange(
this.lanewise(VectorOperators.AND, 2 * VLENGTH - 1).toShuffle(),
v2)
VLENGTH является степенью двойки. Lane-wise AND операция приводит к вектору, элементы которого находятся в диапазоне [0, 2 * VLENGTH - 1]). Преобразование перестановки приводит к частично обернутой перестановке, индексы которой находятся в диапазоне [-VLENGTH, VLENGTH - 1]), где исключительные индексы используются для выбора элементов в третьем векторе.- Указано в:
-
selectFromв классеVector<Short> - Параметры:
-
v1- первый входной вектор -
v2- второй входной вектор - Возвращает:
- переупорядочение элементов проходов
v1иv2 - См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(Vector<Short> bits, Vector<Short> mask)
(a&~c)|(b&c) каждой записи. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для комбинирования в текущий вектор -
mask- побитовая маска для включения комбинирования входных битов - Возвращает:
- побитовое комбинирование заданных битов в текущий вектор под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(short bits, short mask)
(a&~c)|(b&c) каждой записи. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для комбинирования в текущий вектор -
mask- побитовая маска для включения комбинирования входных битов - Возвращает:
- побитовое комбинирование заданных битов в текущий вектор под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(short bits, Vector<Short> mask)
(a&~c)|(b&c) каждой записи. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для комбинирования в текущий вектор -
mask- побитовая маска для включения комбинирования входных битов - Возвращает:
- побитовое комбинирование заданных битов в текущий вектор под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(Vector<Short> bits, short mask)
(a&~c)|(b&c) каждой записи. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для комбинирования в текущий вектор -
mask- побитовая маска для включения комбинирования входных битов - Возвращает:
- побитовое комбинирование заданных битов в текущий вектор под управлением побитовой маски
- См. также:
reduceLanes
public abstract short reduceLanes(VectorOperators.Associative op)
Некоторые операции сокращения не поддерживают произвольное переупорядочение операндов, но включены из-за их полезности.
- В случае
FIRST_NONZERO, сокращение возвращает значение из записи с наименьшим номером, отличным от нуля. - Все остальные операции сокращения полностью коммутативны и ассоциативны. Реализация может выбрать любой порядок обработки, но результат всегда будет одинаковым.
- Параметры:
-
op- операция, используемая для объединения значений записей - Возвращает:
- накопленный результат
- Исключения:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
reduceLanes
public abstract short reduceLanes(VectorOperators.Associative op, VectorMask<Short> m)
Если элементы не выбраны, возвращается идентификатор значения, специфичный для операции.
- Если операция —
ADD,XOR,ORилиFIRST_NONZERO, то идентификатор значения равен нулю, по умолчаниюshortзначение. - Если операция —
MUL, то идентификатор значения равен единице. - Если операция —
AND, то идентификатор значения равен минус единице (все биты установлены). - Если операция —
MAX, то идентификатор значения равенShort.MIN_VALUE. - Если операция —
MIN, то идентификатор значения равенShort.MAX_VALUE.
Несколько операций сокращения не поддерживают произвольное переупорядочение операндов, но включены из-за их полезности.
- В случае
FIRST_NONZERO, сокращение возвращает значение из записи с наименьшим номером, отличным от нуля. - Все остальные операции сокращения полностью коммутативны и ассоциативны. Реализация может выбрать любой порядок обработки, но результат всегда будет одинаковым.
- Параметры:
-
op- операция, используемая для объединения значений записей -
m- маска, контролирующая выбор записей - Возвращает:
- результат сокращения, накопленный из выбранных значений записей
- Исключения:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lane
public abstract short lane(int i)
i
- Параметры:
-
i- индекс записи - Возвращает:
- элемент записи по индексу записи
i - Исключения:
-
IllegalArgumentException- если индекс находится вне диапазона (< 0 || >= length())
сLane
public abstract ShortVector withLane(int i, short e)
i значением e. Это операция между каналами, и она ведет себя так, как если бы она возвращала результат смешивания этого вектора с входным вектором, который является результатом широковещательной передачи e и маски, в которой установлен только один канал в индексе канала i.- Параметры:
-
i- индекс канала элемента канала, который требуется заменить -
e- значение, которое требуется поместить - Возвращает:
- результат замены элемента канала этого вектора в индексе канала
iзначениемe. - Исключение:
-
IllegalArgumentException- если индекс находится вне диапазона (< 0 || >= length())
toArray
public final short[] toArray()
short[], содержащий все значения каналов. Длина массива совпадает с длиной вектора. Элементы массива хранятся в порядке каналов. Этот метод ведет себя так, как если бы он сохранял этот вектор в выделенном массиве (используя intoArray) и возвращал массив следующим образом:
short[] a = new short[this.length()];
this.intoArray(a, 0);
return a;
toIntArray
public final int[] toIntArray()
int[], содержащий все значения каналов, преобразованные к типу int. Длина массива совпадает с длиной вектора. Элементы массива преобразуются так, как если бы они были приведением типов, и хранятся в порядке каналов. Данная операция может завершиться неудачей, если тип элемента вектора является
float или double, когда каналы содержат дробные или вне диапазона значения. Если значение любого канала вектора не может быть представлено как int, выбрасывается исключение. - Определено в:
-
toIntArrayв классеVector<Short> - Примечание реализации:
- При использовании этого метода для векторов типа
ShortVectorне будет потери точности или диапазона, поэтому не будет выбрасыватьсяUnsupportedOperationException. - Возвращает:
- массив типа
int[], содержащий значения каналов этого вектора - См. также:
toLongArray
public final long[] toLongArray()
long[], содержащий все значения каналов, преобразованные к типу long. Длина массива совпадает с длиной вектора. Элементы массива преобразуются так, как если бы они были приведением типов, и хранятся в порядке каналов. Данная операция может завершиться неудачей, если тип элемента вектора является
float или double, когда каналы содержат дробные или вне диапазона значения. Если значение любого канала вектора не может быть представлено как long, выбрасывается исключение. - Определено в:
-
toLongArrayв классеVector<Short> - Примечание реализации:
- При использовании этого метода для векторов типа
ShortVectorне будет потери точности или диапазона, поэтому не будет выбрасыватьсяUnsupportedOperationException. - Возвращает:
- массив типа
long[], содержащий значения каналов этого вектора - См. также:
toDoubleArray
public final double[] toDoubleArray()
double[], содержащий все значения каналов, преобразованные к типу double. Длина массива совпадает с длиной вектора. Элементы массива преобразуются так, как если бы они были приведением типов, и хранятся в порядке каналов. Данная операция может потерять точность, если тип элемента вектора является long. - Определено в:
-
toDoubleArrayв классеVector<Short> - Примечание реализации:
- При использовании этого метода для векторов типа
ShortVectorне будет потери точности. - Возвращает:
- массив типа
double[], содержащий значения каналов этого вектора, возможно, округленные до представимых значенийdouble - См. также:
fromArray
public static ShortVector fromArray(VectorSpecies<Short> species, short[] a, int offset)
short[], начиная с смещения. Для каждого канала вектора, где N - индекс канала вектора, элемент массива с индексом offset + N помещается в результирующий вектор по индексу канала N.- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве - Возвращает:
- вектор, загруженный из массива
- Исключение:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого каналаNв векторе
fromArray
public static ShortVector fromArray(VectorSpecies<Short> species, short[] a, int offset, VectorMask<Short> m)
short[], начиная со смещения и используя маску. Каналы, где маска не установлена, заполняются значением по умолчанию short (ноль). Для каждого канала вектора, где N - индекс канала вектора, если канал маски с индексом N установлен, то элемент массива с индексом offset + N помещается в результирующий вектор по индексу канала N; в противном случае значение по умолчанию помещается в результирующий вектор по индексу канала N.- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве -
m- маска, управляющая выбором канала - Возвращает:
- вектор, загруженный из массива
- Исключение:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого каналаNв векторе, где маска установлена
fromArray
public static ShortVector fromArray(VectorSpecies<Short> species, short[] a, int offset, int[] indexMap, int mapOffset)
short[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность элементов VLENGTH в другом массиве int, начиная с заданного mapOffset. Для каждого канала вектора, где N — индекс канала, канал загружается из элемента массива a[f(N)], где f(N) — выражение сопоставления индексов offset + indexMap[mapOffset + N]].
- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве, может быть отрицательным, если относительные индексы в карте индексов компенсируют, чтобы получить значение в пределах границ массива -
indexMap- карта индексов -
mapOffset- смещение в карте индексов - Возвращает:
- вектор, загруженный из индексированных элементов массива
- Исключение:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вaдля любого каналаNв векторе - См. также:
fromArray
public static ShortVector fromArray(VectorSpecies<Short> species, short[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Short> m)
short[], под управлением маски и используя индексы, получаемые путем добавления фиксированного offset к серии вторичных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность VLENGTH элементов во втором массиве int, начиная с заданного mapOffset. Для каждой полосы вектора, где N - это индекс полосы вектора, если полоса установлена в маске, полоса загружается из элемента массива a[f(N)], где f(N) - это выражение отображения индекса offset + indexMap[mapOffset + N]]. Неустановленные полосы в результирующем векторе устанавливаются в ноль.
- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве, может быть отрицательным, если относительные индексы в карте индексов компенсируют значение в пределах границ массива -
indexMap- карта индексов -
mapOffset- смещение в карте индексов -
m- маска, управляющая выбором полосы - Возвращает:
- вектор, загруженный из индексированных элементов массива
- Исключения:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вa, для любой полосыNв векторе, где маска установлена - См. также:
fromCharArray
public static ShortVector fromCharArray(VectorSpecies<Short> species, char[] a, int offset)
char[], начиная со смещения. Для каждой полосы вектора, где N - это индекс полосы вектора, элемент массива с индексом offset + N сначала преобразуется в значение short, а затем помещается в результирующий вектор с индексом полосы N.- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве - Возвращает:
- вектор, загруженный из массива
- Исключения:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой полосыNв векторе
fromCharArray
public static ShortVector fromCharArray(VectorSpecies<Short> species, char[] a, int offset, VectorMask<Short> m)
char[], начиная со смещения и используя маску. Полосы, где маска не установлена, заполняются значением по умолчанию short (ноль). Для каждой полосы вектора, где N - это индекс полосы вектора, если полоса маски с индексом N установлена, то элемент массива с индексом offset + N сначала преобразуется в значение short, а затем помещается в результирующий вектор с индексом полосы N, в противном случае значение элемента по умолчанию помещается в результирующий вектор с индексом полосы N.- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве -
m- маска, управляющая выбором полосы - Возвращает:
- вектор, загруженный из массива
- Исключения:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой полосыNв векторе, где маска установлена
fromCharArray
public static ShortVector fromCharArray(VectorSpecies<Short> species, char[] a, int offset, int[] indexMap, int mapOffset)
char[], используя индексы, получаемые путем добавления фиксированного offset к серии вторичных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность VLENGTH элементов во втором массиве int, начиная с заданного mapOffset. Для каждой полосы вектора, где N - это индекс полосы вектора, полоса загружается из выражения (short) a[f(N)], где f(N) - это выражение отображения индекса offset + indexMap[mapOffset + N]].
- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве, может быть отрицательным, если относительные индексы в карте индексов компенсируют значение в пределах границ массива -
indexMap- карта индексов -
mapOffset- смещение в карте индексов - Возвращает:
- вектор, загруженный из индексированных элементов массива
- Исключения:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вa, для любой полосыNв векторе - См. также:
fromCharArray
public static ShortVector fromCharArray(VectorSpecies<Short> species, char[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Short> m)
char[], под управлением маски и используя индексы, получаемые путем добавления фиксированного offset к серии вторичных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность VLENGTH элементов во втором массиве int, начиная с заданного mapOffset. Для каждой полосы вектора, где N - это индекс полосы вектора, если полоса установлена в маске, полоса загружается из выражения (short) a[f(N)], где f(N) - это выражение отображения индекса offset + indexMap[mapOffset + N]]. Неустановленные полосы в результирующем векторе устанавливаются в ноль.
- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве, может быть отрицательным, если относительные индексы в карте индексов компенсируют значение в пределах границ массива -
indexMap- карта индексов -
mapOffset- смещение в карте индексов -
m- маска, управляющая выбором полосы - Возвращает:
- вектор, загруженный из индексированных элементов массива
- Исключения:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вa, для любой полосыNв векторе, где маска установлена - См. также:
fromMemorySegment
public static ShortVector fromMemorySegment(VectorSpecies<Short> species, MemorySegment ms, long offset, ByteOrder bo)
Этот метод работает так, как если бы он возвращал результат вызова fromMemorySegment() следующим образом:
var m = species.maskAll(true);
return fromMemorySegment(species, ms, offset, bo, m);
- Параметры:
-
species- вид желаемого вектора -
ms- сегмент памяти -
offset- смещение в сегменте памяти -
bo- предполагаемый порядок байтов - Возвращает:
- вектор, загруженный из сегмента памяти
- Исключения:
-
IndexOutOfBoundsException- еслиoffset+N*2 < 0илиoffset+N*2 >= ms.byteSize()для любой полосыNв векторе -
IllegalStateException- если сессия сегмента памяти не активна или если доступ осуществляется из потока, отличного от потока, владеющего сессией. - С версии:
- 19
fromMemorySegment
public static ShortVector fromMemorySegment(VectorSpecies<Short> species, MemorySegment ms, long offset, ByteOrder bo, VectorMask<Short> m)
short (ноль). Байты объединяются в примитивные элементы разрядов в соответствии с указанным порядком байтов. Вектор упорядочивается в разряды в соответствии с порядком памяти. Следующий псевдокод иллюстрирует поведение:
var slice = ms.asSlice(offset);
short[] ar = new short[species.length()];
for (int n = 0; n < ar.length; n++) {
if (m.laneIsSet(n)) {
ar[n] = slice.getAtIndex(ValuaLayout.JAVA_SHORT.withByteAlignment(1), n);
}
}
ShortVector r = ShortVector.fromArray(species, ar, 0);
- Примечание к реализации:
- Эта операция, вероятно, будет более эффективной, если указанный порядок байтов совпадает с родным порядком платформы, поскольку этому методу не потребуется переупорядочивать байты значений разрядов.
- Параметры:
-
species- вид желаемого вектора -
ms- сегмент памяти -
offset- смещение в сегменте памяти -
bo- требуемый порядок байтов -
m- маска, контролирующая выбор разрядов - Возвращает:
- вектор, загруженный из сегмента памяти
- Изначает:
-
IndexOutOfBoundsException- еслиoffset+N*2 < 0илиoffset+N*2 >= ms.byteSize()для любого разрядаNв векторе, где маска установлена -
IllegalStateException- если сессия сегмента памяти не активна или если доступ осуществляется из потока, отличного от потока, владеющего сессией. - С:
- 19
intoArray
public final void intoArray(short[] a, int offset)
short[], начиная со смещения. Для каждого разряда вектора, где N - это индекс разряда вектора, элемент разряда с индексом N сохраняется в элемент массива a[offset+N].
- Параметры:
-
a- массив типаshort[] -
offset- смещение в массиве - Изначает:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого разрядаNв векторе
intoArray
public final void intoArray(short[] a, int offset, VectorMask<Short> m)
short[], начиная со смещения и используя маску. Для каждого разряда вектора, где N - это индекс разряда вектора, элемент разряда с индексом N сохраняется в элемент массива a[offset+N]. Если разряд маски в N не установлен, соответствующий элемент массива a[offset+N] остается неизменным.
Проверка диапазона массива выполняется для разрядов, где маска установлена. Разряды, где маска сброшена, не сохраняются и не должны соответствовать законным элементам a. То есть, сброшенные разряды могут соответствовать индексам массива, меньшим нуля или находящимся за пределами массива.
- Параметры:
-
a- массив, типаshort[] -
offset- смещение в массиве -
m- маска, управляющая сохранением разрядов - Изначает:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого разрядаNв векторе, где маска установлена
intoArray
public final void intoArray(short[] a, int offset, int[] indexMap, int mapOffset)
short[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность VLENGTH элементов во втором массиве int, начиная с заданного mapOffset. Для каждого разряда вектора, где N — это индекс разряда вектора, элемент разряда с индексом N сохраняется в элемент массива a[f(N)], где f(N) — это выражение сопоставления индексов offset + indexMap[mapOffset + N]].
- Параметры:
-
a- массив -
offset- смещение для объединения со смещениями карты индексов -
indexMap- карта индексов -
mapOffset- смещение в карте индексов - Изначает:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вaдля любого разрядаNв векторе - См. также:
intoArray
public final void intoArray(short[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Short> m)
short[] под управлением маски и используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность VLENGTH элементов во втором массиве int, начиная с заданного mapOffset. Для каждого разряда вектора, где N - это индекс разряда вектора, если разряд маски с индексом N установлен, то элемент разряда с индексом N сохраняется в элемент массива a[f(N)], где f(N) — это выражение сопоставления индексов offset + indexMap[mapOffset + N]].
- Параметры:
-
a- массив -
offset- смещение для объединения со смещениями карты индексов -
indexMap- карта индексов -
mapOffset- смещение в карте индексов -
m- маска - Изначает:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вaдля любого разрядаNв векторе, где маска установлена - См. также:
intoCharArray
public final void intoCharArray(char[] a, int offset)
char[], начиная со смещения. Для каждого разряда вектора, где N - это индекс разряда вектора, элемент разряда с индексом N сначала преобразуется в значение типа char, а затем сохраняется в элемент массива a[offset+N].
- Параметры:
-
a- массив, типаchar[] -
offset- смещение в массиве - Изначает:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого разрядаNв векторе
intoCharArray
public final void intoCharArray(char[] a, int offset, VectorMask<Short> m)
char[], начиная со смещения и используя маску. Для каждого разряда вектора, где N - это индекс разряда вектора, элемент разряда с индексом N сначала преобразуется в значение типа char, а затем сохраняется в элемент массива a[offset+N]. Если разряд маски в N не установлен, соответствующий элемент массива a[offset+N] остается неизменным.
Проверка диапазона массива выполняется для разрядов, где маска установлена. Разряды, где маска сброшена, не сохраняются и не должны соответствовать законным элементам a. То есть, сброшенные разряды могут соответствовать индексам массива, меньшим нуля или находящимся за пределами массива.
- Параметры:
-
a- массив, типаchar[] -
offset- смещение в массиве -
m- маска, управляющая сохранением разрядов - Изначает:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого разрядаNв векторе, где маска установлена
intoCharArray
public final void intoCharArray(char[] a, int offset, int[] indexMap, int mapOffset)
char[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность VLENGTH элементов во втором массиве int, начиная с заданного mapOffset. Для каждого разряда вектора, где N — это индекс разряда вектора, элемент разряда с индексом N сначала преобразуется в значение типа char, а затем сохраняется в элемент массива a[f(N)], где f(N) — это выражение сопоставления индексов offset + indexMap[mapOffset + N]].
- Параметры:
-
a- массив -
offset- смещение для объединения со смещениями карты индексов -
indexMap- карта индексов -
mapOffset- смещение в карте индексов - Изначает:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вaдля любого разрядаNв векторе - См. также:
intoCharArray
public final void intoCharArray(char[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Short> m)
char[] под управлением маски и используя индексы, полученные путем добавления фиксированного offset к серии вторичных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность VLENGTH элементов во втором массиве int, начиная с заданного mapOffset. Для каждой полосы вектора, где N - это индекс полосы вектора, если полоса маски с индексом N установлена, то элемент полосы с индексом N сначала приводится к типу char, а затем сохраняется в элементе массива a[f(N)], где f(N) - это выражение отображения индекса offset + indexMap[mapOffset + N]].
- Параметры:
-
a- массив -
offset- смещение для объединения со смещениями карты индексов -
indexMap- карта индексов -
mapOffset- смещение в карте индексов -
m- маска - Исключения:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вaдля любой полосыNв векторе, где установлена маска - См. также:
intoMemorySegment
public final void intoMemorySegment(MemorySegment ms, long offset, ByteOrder bo)
Байты извлекаются из примитивных элементов полосы в соответствии с указанным порядком байтов. Полосы хранятся в соответствии с их порядком в памяти.
Этот метод ведет себя так, как будто он вызывает intoMemorySegment() следующим образом:
var m = maskAll(true);
intoMemorySegment(ms, offset, bo, m);
- Указано в:
-
intoMemorySegmentв классеVector<Short> - Параметры:
-
ms- сегмент памяти -
offset- смещение в сегменте памяти -
bo- предполагаемый порядок байтов - С версии:
- 19
intoMemorySegment
public final void intoMemorySegment(MemorySegment ms, long offset, ByteOrder bo, VectorMask<Short> m)
Байты извлекаются из примитивных элементов полосы в соответствии с указанным порядком байтов. Полосы хранятся в соответствии с их порядком в памяти.
Следующий псевдокод иллюстрирует поведение, где JAVA_E - это структура примитивного типа элемента, ETYPE - это примитивный тип элемента, а EVector - это примитивный векторный тип для этого вектора:
ETYPE[] a = this.toArray();
var slice = ms.asSlice(offset)
for (int n = 0; n < a.length; n++) {
if (m.laneIsSet(n)) {
slice.setAtIndex(ValueLayout.JAVA_E.withBitAlignment(8), n);
}
}
- Указано в:
-
intoMemorySegmentв классеVector<Short> - Параметры:
-
ms- сегмент памяти -
offset- смещение в сегменте памяти -
bo- предполагаемый порядок байтов -
m- маска, управляющая выбором полосы - С версии:
- 19
reinterpretAsBytes
public final ByteVector reinterpretAsBytes()
byte, где байты извлекаются из полос в соответствии с порядком little-endian. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(byte.class)). Его можно рассматривать как обратное к различным методам, которые объединяют байты в более крупные полосы в том же векторе, например, Vector.reinterpretAsInts(). - Указано в:
-
reinterpretAsBytesв классеVector<Short> - Возвращает:
ByteVectorс той же формой и информационным содержанием- См. также:
viewAsIntegralLanes
public final ShortVector viewAsIntegralLanes()
VSHAPE или VLENGTH, и не изменяет битовое содержимое вектора. Если ETYPE вектора уже является целочисленным типом, возвращается тот же вектор без изменений. Этот метод возвращает значение этого выражения: convert(conv,0), где conv - это VectorOperators.Conversion.ofReinterpret(E.class,F.class), а F - это не тип с плавающей точкой того же размера, что и E. - Указано в:
-
viewAsIntegralLanesв классеVector<Short> - Возвращает:
- исходный вектор, переинтерпретированный как не тип с плавающей точкой
- См. также:
viewAsFloatingLanes
public final Vector<?> viewAsFloatingLanes()
VSHAPE или VLENGTH, и не изменяет битовое содержимое вектора. Если ETYPE вектора уже является типом с плавающей точкой, возвращается тот же вектор без изменений. Если размер элемента вектора не соответствует размеру любого типа с плавающей точкой, генерируется исключение IllegalArgumentException. Этот метод возвращает значение этого выражения: convert(conv,0), где conv - это VectorOperators.Conversion.ofReinterpret(E.class,F.class), а F - это тип с плавающей точкой того же размера, что и E, если таковой существует. - Указано в:
-
viewAsFloatingLanesв классеVector<Short> - Примечание по реализации:
- Этот метод всегда генерирует исключение
UnsupportedOperationException, поскольку нет типа с плавающей точкой того же размера, что иshort. Тип возвращаемого значения этого метода произвольно обозначен какVector<?>. В будущих версиях этого API тип возвращаемого значения может измениться, если появятся дополнительные типы с плавающей точкой. - Возвращает:
- исходный вектор, переинтерпретированный как тип с плавающей точкой
- См. также:
toString
public final String toString()
"[0,1,2...]", сообщая значения полос этого вектора в порядке полос. Строка создается так же, как и при вызове Arrays.toString(), в зависимости от массива short, возвращаемого методом this.toArray().equals
public final boolean equals(Object obj)
Сравнение значений полос производится так же, как и при вызове Arrays.equals(), в зависимости от массивов, возвращаемых методом toArray() для обоих векторов.
hashCode
species
check
public final <F> Vector<F> check(VectorSpecies<F> species)
Vectorspecies == species()
? this
: throw new ClassCastException().check
public final <F> Vector<F> check(Class<F> elementType)
elementType == species().elementType()
? this
: throw new ClassCastException(). maskAll
public final VectorMask<Short> maskAll(boolean bit)
Этот метод возвращает значение этого выражения: species().maskAll(bit).
reinterpretAsShorts
public ShortVector reinterpretAsShorts()
short, где каналы собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(short.class)). Его можно рассматривать как обратное преобразование Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsShortsв классеVector<E> - Возвращает:
ShortVectorс той же формой и информационным содержимым
reinterpretAsInts
public IntVector reinterpretAsInts()
int, где каналы собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(int.class)). Его можно рассматривать как обратное преобразование Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsIntsв классеVector<E> - Возвращает:
IntVectorс той же формой и информационным содержимым
reinterpretAsLongs
public LongVector reinterpretAsLongs()
long, где каналы собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(long.class)). Его можно рассматривать как обратное преобразование Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsLongsв классеVector<E> - Возвращает:
LongVectorс той же формой и информационным содержимым
reinterpretAsFloats
public FloatVector reinterpretAsFloats()
float, где каналы собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(float.class)). Его можно рассматривать как обратное преобразование Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsFloatsв классеVector<E> - Возвращает:
FloatVectorс той же формой и информационным содержимым
reinterpretAsDoubles
public DoubleVector reinterpretAsDoubles()
double, где каналы собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(double.class)). Его можно рассматривать как обратное преобразование Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsDoublesв классеVector<E> - Возвращает:
DoubleVectorс той же формой и информационным содержимым
convert
public final <F> Vector<F> convert(VectorOperators.Conversion<Short,F> conv, int part)
ETYPE в новый тип элементов (называемый здесь FTYPE) в соответствии с указанным преобразованием. Это операция, инвариантная к форме по элементам, которая копирует ETYPE значения из входного вектора в соответствующие FTYPE значения в результате. В зависимости от выбранного преобразования, эта операция может либо расширить, либо сократить свой логический результат, в этом случае ненулевое part число может дополнительно контролировать выбор и управление логическим результатом в физический выходной вектор. Каждый конкретный тип преобразования описывается константой преобразования в классе VectorOperators. Каждый оператор преобразования имеет указанный тип области и тип диапазона. Тип области должен точно совпадать с типом элементов входного вектора, а тип диапазона определяет тип элементов выходных векторов.
Оператор преобразования может быть классифицирован как (соответственно) на месте, расширяющий или сокращающий, в зависимости от того, равен ли размер в битах его типа области (соответственно) размеру в битах его типа диапазона, меньше или больше.
Независимо от этого, операции преобразования также могут быть классифицированы как интерпретирующие или преобразующие значения, в зависимости от того, копирует ли преобразование биты представления без изменений или изменяет биты представления для сохранения (части или всего) логического значения входного значения.
Если преобразование интерпретирует и сокращает, оно обрезает старшие биты входного значения. Если оно расширяет, оно заполняет старшие биты результата нулевыми битами, когда нет соответствующих входных битов.
Расширяющее преобразование, такое как S2I (short значение в int) принимает скалярное значение и представляет его в более широком формате (всегда с некоторым избытком информации). Сокращающее преобразование, такое как D2F (double значение в float) принимает скалярное значение и представляет его в более компактном формате (всегда с некоторой потерей информации). Некоторые преобразования на месте также могут включать потерю информации, такие как L2D (long значение в double) или F2I (float значение в int). Интерпретирующие преобразования на месте не являются потерянными, если битовое значение каким-либо образом не является законным в выходном типе. Преобразование битового шаблона NaN может отбросить биты из значащей части NaN.
Эта классификация важна, потому что, если не указано иное, операции преобразования никогда не изменяют форму вектора, независимо от того, как они могут изменить размеры элементов. Поэтому расширяющее преобразование не может сохранить все свои результаты в выходном векторе, потому что выходной вектор имеет меньше элементов большего размера, чтобы иметь тот же общий размер в битах, что и входной. Аналогично, сокращающее преобразование должно помещать свои относительно небольшие результаты в подмножество элементов выходного вектора, устанавливая неиспользуемые элементы в ноль.
Например, преобразование из byte в long (M=8) отбросит 87,5% входных значений для преобразования оставшихся 12,5% в элементы выходного вектора с большим размером long. Обратное преобразование преобразует обратно все большие результаты, но потратит 87,5% элементов в выходном векторе. Преобразования на месте (M=1) передают все свои результаты в один выходной вектор без потери элементов.
Для управления подробностями этих расширений и сокращений параметр ненулевого part выбирает частичные результаты из расширений или направляет результаты сокращений в соответствующие позиции следующим образом:
- расширение на
M:partдолжен находиться в диапазоне[0..M-1]и выбирает блок изVLENGTH/Mвходных элементов, начинающийся с элемента начала вpart*VLENGTH/M.Выходные элементы
VLENGTH/Mпредставляют собой частичный срез всего логического результата преобразования, заполняющего весь физический выходной вектор. - сокращение на
M:partдолжен находиться в диапазоне[-M+1..0]и направляет всеVLENGTHвходные элементы в выходной результат, расположенный в элементе начала-part*VLENGTH. Всего существуетVLENGTH*Mвыходных элементов, а те, которые не содержат преобразованных входных значений, заполняются нулями.Группа таких выходных векторов с логическими частями результата, направленными в отдельные блоки, может быть собрана с помощью побитового или (для чисел с плавающей точкой) оператора
FIRST_NONZERO. - на месте (
M=1):partдолжен быть равен нулю. Оба вектора имеют одинаковыйVLENGTH. Результат всегда размещается в элементе начала нуля.
Этот метод является ограниченной версией более общего, но менее часто используемого метода изменения формы convertShape(). Результат этого метода такой же, как и выражение this.convertShape(conv, rsp, this.broadcast(part)), где выходной вид равен rsp=this.species().withLanes(FTYPE.class).
- Определяется:
-
convertв классеVector<E> - Параметры типа:
F- упакованный тип элемента вида- Параметры:
-
conv- желаемое скалярное преобразование для применения по элементам -
part- номер части результата или ноль, если не расширяется и не сокращается - Возвращает:
- вектор, преобразованный по форме и типу элементов из этого вектора
- См. также:
castShape
public final <F> Vector<F> castShape(VectorSpecies<F> toSpecies, int part)
convertShape(conv,rsp,part), где conv равен VectorOperators.Conversion.ofCast(E.class,F.class). Если у старого и нового видов разная форма, это изменение формы операция и может иметь особые затраты на реализацию.
- Определяется:
-
castShapeв классеVector<E> - Параметры типа:
F- упакованный тип элемента выходного вида- Параметры:
-
toSpecies- желаемый выходной вид -
part- номер части результата или ноль, если не расширяется и не сокращается - Возвращает:
- вектор, преобразованный по типу элементов из этого вектора
- См. также:
Преобразовать форму
public abstract <F> Vector<F> convertShape(VectorOperators.Conversion<Short,F> conv, VectorSpecies<F> rsp, int part)
ETYPE в новый тип прохода (называемый FTYPE здесь) в соответствии с указанным преобразованием. Это операция по проходам, которая копирует ETYPE значения из входного вектора в соответствующие FTYPE значения в результате. Если у старого и нового видов одинаковая форма, поведение точно такое же, как у более простого метода, не изменяющего форму convert(). В таких случаях следует использовать более простой метод convert(), чтобы упростить понимание кода. В противном случае это операция изменения формы и может иметь особые затраты на реализацию.
В качестве совместного эффекта изменений формы и изменений размера прохода, входной и выходной виды могут иметь разное количество проходов, вызывая расширение или сжатие. В этом случае ненулевой part параметр выбирает частичные результаты из расширенного логического результата или направляет результаты сжатого логического результата в физический выходной вектор требуемого выходного вида.
Следующий псевдокод иллюстрирует поведение этого метода для преобразований в том же месте, расширения и сжатия. (Этот псевдокод также применим к методу, не изменяющему форму, но с ограничениями формы на выходной вид.) Обратите внимание, что только один из трех путей кода актуален для любой конкретной комбинации оператора преобразования и форм.
FTYPE scalar_conversion_op(ETYPE s);
EVector a = ...;
VectorSpecies<F> rsp = ...;
int part = ...;
VectorSpecies<E> dsp = a.species();
int domlen = dsp.length();
int ranlen = rsp.length();
FTYPE[] logical = new FTYPE[domlen];
for (int i = 0; i < domlen; i++) {
logical[i] = scalar_conversion_op(a.lane(i));
}
FTYPE[] physical;
if (domlen == ranlen) { // in-place
assert part == 0; //else AIOOBE
physical = logical;
} else if (domlen > ranlen) { // expanding
int M = domlen / ranlen;
assert 0 <= part && part < M; //else AIOOBE
int origin = part * ranlen;
physical = Arrays.copyOfRange(logical, origin, origin + ranlen);
} else { // (domlen < ranlen) // contracting
int M = ranlen / domlen;
assert 0 >= part && part > -M; //else AIOOBE
int origin = -part * domlen;
System.arraycopy(logical, 0, physical, origin, domlen);
}
return FVector.fromArray(ran, physical, 0);
- Указано в:
-
convertShapeв классеVector<E> - Параметры типа:
F- упакованный тип элемента выходного вида- Параметры:
-
conv- желаемое скалярное преобразование для применения по проходам -
rsp- желаемый выходной вид -
part- номер части результата или ноль, если не расширяется и не сжимается - Возвращает:
- вектор, преобразованный по типу элемента из этого вектора
- См. также:
Получить данные
protected final Object getPayload()
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/jdk.incubator.vector/jdk/incubator/vector/ShortVector.html