Класс 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. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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 |
lt |
Проверяет, меньше ли этот вектор другого входного вектора. |
final VectorMask |
maskAll |
Возвращает маску того же вида, что и этот вектор, в которой каждый элемент установлен или сброшен согласно заданному логическому значению, распространённому на все элементы. |
final ShortVector |
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 |
Вычисляет побитовое логическое ИЛИ ( |) для этого вектора и второго входного вектора. |
abstract ShortVector |
rearrange |
Переставляет элементы этого вектора, выбирая их под управлением заданной перестановки. |
abstract ShortVector |
rearrange |
Переставляет элементы двух векторов, выбирая их под управлением заданной перестановки; для управления данными используются как обычные, так и специальные индексы перестановки. |
abstract ShortVector |
rearrange |
Переставляет элементы этого вектора, выбирая их под управлением заданной перестановки и маски. |
abstract short |
reduceLanes |
Возвращает значение, полученное накоплением значений всех элементов этого вектора. |
abstract short |
reduceLanes |
Возвращает значение, полученное накоплением значений выбранных элементов этого вектора под управлением маски. |
final ByteVector |
reinterpretAsBytes() |
Представляет этот вектор как вектор той же формы и с теми же данными, но с типом элементов byte; байты извлекаются из элементов в порядке little-endian. |
DoubleVector |
reinterpretAsDoubles() |
Переинтерпретирует этот вектор как вектор той же формы и с теми же данными, но с типом элементов 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 |
Возвращает вектор заданного вида со всеми элементами, установленными в ноль — значение примитивного типа по умолчанию. |
Методы, объявленные в классе Vector
bitSize, byteSize, compare, elementSize, elementType, length, reduceLanesToLong, reduceLanesToLong, reinterpretShape, shape, toShuffle
Подробное описание полей
SPECIES_64
public static final VectorSpecies<Short> SPECIES_64
ShortVector размера VectorShape.S_64_BIT.SPECIES_128
public static final VectorSpecies<Short> SPECIES_128
ShortVector размера VectorShape.S_128_BIT.SPECIES_256
public static final VectorSpecies<Short> SPECIES_256
ShortVector размера VectorShape.S_256_BIT.SPECIES_512
public static final VectorSpecies<Short> SPECIES_512
ShortVector размера VectorShape.S_512_BIT.SPECIES_MAX
public static final VectorSpecies<Short> SPECIES_MAX
ShortVector размера VectorShape.S_Max_BIT.SPECIES_PREFERRED
public static final VectorSpecies<Short> SPECIES_PREFERRED
ShortVector. Предпочтительный тип — это тип с максимальным размером в битах для данной платформы.Подробное описание методов
zero
public static ShortVector zero(VectorSpecies<Short> species)
- Параметры:
-
species— тип желаемого нулевого вектора - Возвращает:
- нулевой вектор
broadcast
public abstract ShortVector broadcast(short e)
e. Содержимое текущего вектора отбрасывается; для этой операции важен только его тип. Этот метод возвращает значение следующего выражения: ShortVector.broadcast(this.species(), e).
- Примечание API:
- В отличие от похожего метода с именем
broadcast()в суперклассеVector, этому методу не нужно проверять свой аргумент, и он не может выброситьIllegalArgumentException. Поэтому этот метод предпочтительнее метода суперкласса. - Параметры:
-
e— значение для распространения - Возвращает:
- вектор, все элементы которого установлены в примитивное значение
e - См. также:
broadcast
public static ShortVector broadcast(VectorSpecies<Short> species, short e)
e.- Параметры:
-
species— тип желаемого вектора -
e— значение для распространения - Возвращает:
- вектор, все элементы которого установлены в примитивное значение
e - См. также:
broadcast
public abstract ShortVector broadcast(long e)
e. Содержимое текущего вектора отбрасывается; для этой операции важен только его тип. Этот метод возвращает значение следующего выражения: EVector.broadcast(this.species(), (ETYPE)e), где EVector — класс вектора, соответствующий типу элементов этого вектора ETYPE.
Значение long e должно точно представляться типом ETYPE данного вектора, чтобы выполнялось условие e==(long)(ETYPE)e. Если это правило нарушено, проблема не обнаруживается статически, но во время выполнения выбрасывается IllegalArgumentException. Таким образом, этот метод несколько ослабляет статическую проверку типов непосредственных констант и других скалярных значений, но компенсирует это повышением выразительности универсального API. Обратите внимание, что значение e в диапазоне [-128..127] всегда допустимо, поскольку любой ETYPE принимает любое значение byte.
- Определено в:
-
broadcastв классеVector<Short> - Примечание API:
- При работе с подтипами векторов, такими как
ShortVector, обычно выбирается метод с более строгой типизацией. Его можно явно выбрать с помощью приведения типа:v.broadcast((short)e). Оба выражения дают численно идентичные результаты. - Параметры:
-
e— значение для распространения - Возвращает:
- вектор, все элементы которого установлены в примитивное значение
e - См. также:
broadcast
public static ShortVector broadcast(VectorSpecies<Short> species, long e)
e. Значение long должно точно представляться типом ETYPE данного типа вектора, чтобы выполнялось условие e==(long)(ETYPE)e.- Параметры:
-
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).- Параметры:
-
e— входной скаляр - Возвращает:
- результат умножения этого вектора на указанный скаляр
- См. также:
and
public final ShortVector and(Vector<Short> v)
&) этого вектора и второго входного вектора. Это поэлементная бинарная операция, которая применяет примитивную операцию побитового «И» (&) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(AND, v). Это не полноценная именованная операция, такая как add. Версия этой операции с маской напрямую недоступна, но ее можно получить с помощью версии lanewise с маской.
- Параметры:
-
v— второй входной вектор - Возвращает:
- побитовое
&этого вектора и второго входного вектора - См. также:
and
public final ShortVector and(short e)
&) этого вектора и скаляра. Это поэлементная бинарная операция, которая применяет примитивную операцию побитового «И» (&) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(AND, e).- Параметры:
-
e— входной скаляр - Возвращает:
- побитовое
&этого вектора и скаляра - См. также:
or
public final ShortVector or(Vector<Short> v)
|) этого вектора и второго входного вектора. Это поэлементная бинарная операция, которая применяет примитивную операцию побитового «ИЛИ» (|) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(AND, v). Это не полноценная именованная операция, такая как add. Версия этой операции с маской напрямую недоступна, но ее можно получить с помощью версии lanewise с маской.
- Параметры:
-
v— второй входной вектор - Возвращает:
- побитовое
|этого вектора и второго входного вектора - См. также:
or
public final ShortVector or(short e)
|) этого вектора и скаляра. Это поэлементная бинарная операция, которая применяет примитивную операцию побитового «ИЛИ» (|) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(OR, e).- Параметры:
-
e— входной скаляр - Возвращает:
- побитовое
|этого вектора и скаляра - См. также:
neg
abs
not
public final ShortVector 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). - Переопределяет:
-
compareв классеVector<Short> - Параметры:
-
op— операция для сравнения значений элементов -
e— входной скаляр -
m— маска, управляющая выбором элементов - Возвращает:
- результат поэлементной проверки сравнения этого вектора с входным значением в виде маски согласно выбранному оператору сравнения и только для элементов, выбранных маской
- См. также:
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).- Параметры:
-
e— входной скаляр, содержащий заменяющее значение элемента -
m— маска, управляющая выбором скалярного значения для элементов - Возвращает:
- результат объединения элементов этого вектора со скалярным значением
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.
- Параметры:
-
origin— первый входной элемент, который нужно перенести в срез -
v1— второй вектор, логически присоединенный к первому перед извлечением среза (если он не указан, по умолчанию используется нулевой вектор) - Возвращает:
- непрерывный срез из
VLENGTHэлементов, взятый из этого вектора начиная с указанной начальной позиции и при необходимости продолжающийся во втором векторе - См. также:
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).
- Переопределяет:
-
sliceв классеVector<Short> - Параметры:
-
origin— первый входной элемент, который нужно перенести в срез -
w— второй вектор, логически присоединенный к первому перед извлечением среза (если он не указан, по умолчанию используется нулевой вектор) -
m— маска, управляющая выбором элементов результирующего вектора - Возвращает:
- непрерывный срез из
VLENGTHэлементов, взятый из этого вектора начиная с указанной начальной позиции и при необходимости продолжающийся во втором векторе - См. также:
slice
public abstract ShortVector slice(int origin)
origin в текущем векторе. Блок из VLENGTH lane, возможно дополненный нулевыми lane, извлекается в отдельный вектор и возвращается. Это вспомогательный метод, который извлекает данные из одного вектора на фоне расширенного набора нулевых lane. Он эквивалентен slice
(origin, broadcast(0)). Его также можно рассматривать просто как межвекторный сдвиг от более поздних lane к более ранним, при котором освободившиеся в конце вектора lane заполняются нулями. В этом представлении величина сдвига равна origin. - Параметры:
-
origin— первая входная lane, переносимая в срез - Возвращает:
- последние
VLENGTH-originвходных lane, размещённые начиная с первой lane выходных данных и дополненные в конце нулями - См. также:
unslice
public abstract ShortVector unslice(int origin, Vector<Short> w, int part)
slice(). Это межвекторная операция, которая переставляет элементы lane текущего вектора в сторону конца и вставляет их в логическую пару фоновых векторов. Однако возвращается только один из векторов этой пары. Фон формируется дублированием второго входного вектора. (При этом выходные данные никогда не содержат двух дубликатов одной и той же входной lane.) Lane с номером N во входном векторе копируется в lane origin+N первого фонового вектора, если такая lane существует, или в lane 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— первая выходная lane, в которую помещается срез -
w— фоновый вектор, в который (в виде двух копий) будет вставлен срез -
part— номер части результата (ноль или единица) - Возвращает:
- первую или вторую часть пары фоновых векторов
w, обновлённую вставкой этого вектора в указанное начальное положение - См. также:
unslice
public abstract ShortVector unslice(int origin, Vector<Short> w, int part, VectorMask<Short> m)
slice(). Это межвекторная операция, которая переставляет элементы lane текущего вектора в сторону начала и вставляет его lane (если они выбраны маской) в логическую пару фоновых векторов. Как и в версии этого метода без маски, возвращается только один из векторов пары, выбранный числом part. Для каждой lane N, выбранной маской, значение lane копируется в lane origin+N первого фонового вектора, если такая lane существует, или в lane origin+N-VLENGTH второго фонового вектора (которая гарантированно существует). Фоновые lane сохраняют исходные значения, если соответствующие входные lane N не выбраны маской. Возвращается первый или второй фоновый вектор, обновлённый выбранными lane вставленного среза. Число part, равное нулю или единице, выбирает первый или второй обновлённый фоновый вектор.
- Определено в:
-
unsliceв классеVector<Short> - Параметры:
-
origin— первая выходная lane, в которую помещается срез -
w— фоновый вектор, в который (в виде двух копий) будет вставлен срез, если соответствующие lane выбраны вm -
part— номер части результата (ноль или единица) -
m— маска, управляющая выбором lane из текущего вектора - Возвращает:
- первую или вторую часть пары фоновых векторов
w, обновлённую вставкой выбранных lane этого вектора в указанное начальное положение - См. также:
unslice
public abstract ShortVector unslice(int origin)
unslice(), этот метод возвращает только первый из пары фоновых векторов. Это вспомогательный метод, возвращающий результат unslice
(origin, broadcast(0), 0). Его также можно рассматривать просто как межвекторный сдвиг от более ранних lane к более поздним, при котором освободившиеся в начале вектора lane заполняются нулями. В этом представлении величина сдвига равна origin. rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> shuffle)
N перестановки и каждого индекса исходной lane I=s.wrapIndex(s.laneSource(N)) в перестановке выходная lane N получает значение из входного вектора в lane I. rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> s, VectorMask<Short> m)
N перестановки и каждого индекса исходной lane I=s.wrapIndex(s.laneSource(N)) в перестановке выходная lane N получает значение из входного вектора в lane I, если соответствующая lane выбрана маской. В противном случае выходная lane N устанавливается в ноль. Этот метод возвращает значение, соответствующее следующему псевдокоду:
Vector<E> r = this.rearrange(s);
return broadcast(0).blend(r, m);
rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> s, Vector<Short> v)
v). Для каждой lane N перестановки и каждого индекса исходной lane I=s.laneSource(N) в перестановке выходная lane N получает значение из первого вектора в lane 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());
compress
public abstract ShortVector compress(VectorMask<Short> m)
N маски, если маска для lane N установлена, элемент из lane N входного вектора выбирается и помещается в выходной вектор непрерывно, начиная с lane 0. Все оставшиеся старшие lane выходного вектора, если они есть, устанавливаются в ноль. expand
public abstract ShortVector expand(VectorMask<Short> m)
N маски, если маска для lane N установлена, выбирается следующий непрерывный элемент входного вектора, начиная с lane 0, и помещается в выходной вектор в lane N. Все оставшиеся lane выходного вектора, если они есть, устанавливаются в ноль. selectFrom
public abstract ShortVector selectFrom(Vector<Short> v)
v, используя значения индексов, хранящиеся в lane этого вектора. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам текущего вектора. Это межвекторная операция, которая переставляет элементы lane вектора-аргумента под управлением этого вектора. Для каждой lane N этого вектора и каждого значения lane I=wrapIndex(this.lane(N)) в этом векторе выходная lane N получает значение из вектора-аргумента в lane I. Таким образом, результат содержит только значения, хранящиеся в векторе-аргументе v, но представленные в порядке, зависящем от значений индексов в this. Результат совпадает с выражением v.rearrange(this.toShuffle()). - Определено в:
-
selectFromв классеVector<Short> - Параметры:
-
v— вектор, предоставляющий значения результата - Возвращает:
- перестановку элементов lane в
v - См. также:
selectFrom
public abstract ShortVector selectFrom(Vector<Short> s, VectorMask<Short> m)
v, используя значения индексов, хранящиеся в lane этого вектора. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам текущего вектора. Lane, не выбранные маской, получают ноль вместо значения из таблицы. Это межвекторная операция, которая переставляет элементы lane вектора-аргумента под управлением этого вектора и маски. Результат совпадает с выражением v.rearrange(this.toShuffle(), m). - Определено в:
-
selectFromв классеVector<Short> - Параметры:
-
s— вектор, предоставляющий значения результата -
m— маска, управляющая выбором изv - Возвращает:
- перестановку элементов lane в
v - См. также:
selectFrom
public abstract ShortVector selectFrom(Vector<Short> v1, Vector<Short> v2)
v1 и третьего вектора v2, используя значения, хранящиеся в lane этого вектора. Таким образом, второй и третий векторы служат таблицей, элементы которой выбираются по индексам этого вектора. Это межвекторная операция, которая переставляет элементы lane векторов-аргументов под управлением этого вектора. Для каждой lane N этого вектора и каждого значения lane I=wrapIndex(this.lane(N) в этом векторе выходная lane N получает значение из второго вектора в lane I, если I < VLENGTH. В противном случае выходная lane N получает значение из третьего вектора в lane 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 является степенью двойки. Поэлементная операция AND даёт вектор, элементы которого лежат в диапазоне [0, 2 * VLENGTH - 1]). Преобразование в перестановку даёт частично обёрнутую перестановку с индексами в диапазоне [-VLENGTH, VLENGTH - 1]), где для выбора элементов третьего вектора используются исключительные индексы. - Определено в:
-
selectFromв классеVector<Short> - Параметры:
-
v1— первый входной вектор -
v2— второй входной вектор - Возвращает:
- перестановку элементов lane в
v1иv2 - См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(Vector<Short> bits, Vector<Short> mask)
(a&~c)|(b&c) для каждой lane. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты, смешиваемые с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- побитовое смешивание заданных битов с текущим вектором под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(short bits, short mask)
(a&~c)|(b&c) для каждой lane. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты, смешиваемые с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- побитовое смешивание заданных битов с текущим вектором под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(short bits, Vector<Short> mask)
(a&~c)|(b&c) для каждой lane. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты, смешиваемые с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- побитовое смешивание заданных битов с текущим вектором под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(Vector<Short> bits, short mask)
(a&~c)|(b&c) для каждой lane. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты, смешиваемые с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- побитовое смешивание заданных битов с текущим вектором под управлением побитовой маски
- См. также:
reduceLanes
public abstract short reduceLanes(VectorOperators.Associative op)
Некоторые операции редукции не поддерживают произвольную перестановку операндов, но включены сюда благодаря своей полезности.
- В случае
FIRST_NONZEROредукция возвращает значение из lane с наименьшим номером, отличной от нуля. - Все остальные операции редукции полностью коммутативны и ассоциативны. Реализация может выбрать любой порядок обработки, но результат всегда будет одинаковым.
- Параметры:
-
op— операция, используемая для объединения значений lane - Возвращает:
- накопленный результат
- Выбрасывает:
-
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())
withLane
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, извлекая байты из полос в порядке от младшего к старшему. Это вспомогательный метод для выражения 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; полосы формируются из последовательных байтов в порядке от младшего к старшему. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(short.class)). Его можно считать обратным по отношению к Vector.reinterpretAsBytes(). - Определен в:
-
reinterpretAsShortsв классеVector<E> - Возвращает:
- значение
ShortVectorтой же формы и с тем же информационным содержимым
reinterpretAsInts
public IntVector reinterpretAsInts()
int; полосы формируются из последовательных байтов в порядке от младшего к старшему. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(int.class)). Его можно считать обратным по отношению к Vector.reinterpretAsBytes(). - Определен в:
-
reinterpretAsIntsв классеVector<E> - Возвращает:
- значение
IntVectorтой же формы и с тем же информационным содержимым
reinterpretAsLongs
public LongVector reinterpretAsLongs()
long; полосы формируются из последовательных байтов в порядке от младшего к старшему. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(long.class)). Его можно считать обратным по отношению к Vector.reinterpretAsBytes(). - Определен в:
-
reinterpretAsLongsв классеVector<E> - Возвращает:
- значение
LongVectorтой же формы и с тем же информационным содержимым
reinterpretAsFloats
public FloatVector reinterpretAsFloats()
float; полосы формируются из последовательных байтов в порядке от младшего к старшему. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(float.class)). Его можно считать обратным по отношению к Vector.reinterpretAsBytes(). - Определен в:
-
reinterpretAsFloatsв классеVector<E> - Возвращает:
- значение
FloatVectorтой же формы и с тем же информационным содержимым
reinterpretAsDoubles
public DoubleVector reinterpretAsDoubles()
double; полосы формируются из последовательных байтов в порядке от младшего к старшему. Это вспомогательный метод для выражения 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— номер части результата или ноль, если расширения или сжатия нет - Возвращает:
- вектор, преобразованный из этого вектора по типу элемента
- См. также:
convertShape
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— номер части результата или ноль, если расширения или сжатия нет - Возвращает:
- вектор, преобразованный из этого вектора по типу элемента
- См. также:
getPayload
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://docs.oracle.com/en/java/javase/25/docs/api/jdk.incubator.vector/jdk/incubator/vector/ShortVector.html