Класс ShortVector
public abstract sealed 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; байты извлекаются из элементов в порядке от младшего к старшему. |
DoubleVector |
reinterpretAsDoubles() |
Интерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом элементов double; элементы составляются из последовательных байтов в порядке от младшего к старшему. |
FloatVector |
reinterpretAsFloats() |
Интерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом элементов float; элементы составляются из последовательных байтов в порядке от младшего к старшему. |
IntVector |
reinterpretAsInts() |
Интерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом элементов int; элементы составляются из последовательных байтов в порядке от младшего к старшему. |
LongVector |
reinterpretAsLongs() |
Интерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом элементов long; элементы составляются из последовательных байтов в порядке от младшего к старшему. |
ShortVector |
reinterpretAsShorts() |
Интерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом элементов short; элементы составляются из последовательных байтов в порядке от младшего к старшему. |
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 |
Выполняет обратное преобразование среза, вставляя текущий вектор как срез в «фоновый» входной вектор, состоящий из нулевых значений. |
abstract ShortVector |
unslice |
Выполняет обратное преобразование среза, вставляя текущий вектор как срез в другой «фоновый» входной вектор, который рассматривается как один из входов гипотетической последующей операции slice(). |
abstract ShortVector |
unslice |
Выполняет обратное преобразование среза, вставляя текущий вектор как срез (под управлением маски) в другой «фоновый» входной вектор, который рассматривается как один из входов гипотетической последующей операции 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
abstract int |
bitSize() |
Возвращает общий размер этого вектора в битах. |
abstract int |
byteSize() |
Возвращает общий размер этого вектора в байтах. |
abstract VectorMask |
compare |
Проверяет этот вектор, сравнивая его с другим входным вектором согласно заданной операции сравнения в элементах, выбранных маской. |
abstract int |
elementSize() |
Возвращает размер каждого элемента этого вектора в битах. |
abstract Class |
elementType() |
Возвращает примитивный тип элемента ( ETYPE) этого вектора. |
abstract int |
length() |
Возвращает количество элементов, или длину вектора ( VLENGTH). |
abstract long |
reduceLanesToLong |
Возвращает значение, накопленное по всем элементам этого вектора. |
abstract long |
reduceLanesToLong |
Возвращает значение, накопленное по выбранным элементам этого вектора, определяемым маской. |
abstract <F> Vector |
reinterpretShape |
Преобразует этот вектор в вектор заданного вида с типом элемента F, переинтерпретируя байты этого вектора без преобразования значений. |
abstract VectorShape |
shape() |
Возвращает форму этого вектора. |
abstract VectorShuffle |
toShuffle() |
Преобразует этот вектор в перемешивание, преобразуя значения элементов в int и рассматривая их как исходные индексы. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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 полос, возможно дополненный нулевыми полосами, извлекается в отдельный вектор и возвращается. Это вспомогательный метод, который извлекает срез из одного вектора, используя расширенный фон из нулевых полос. Он эквивалентен slice
(origin, broadcast(0)). Его также можно рассматривать просто как сдвиг между полосами от более поздних к более ранним, при котором освободившиеся полосы в конце вектора заполняются нулями. В таком представлении величина сдвига равна origin. - Параметры:
-
origin— первая входная полоса, переносимая в срез - Возвращает:
- последние
VLENGTH-originвходных полос, помещённые начиная с первой полосы выходного вектора и дополненные в конце нулями - См. также:
unslice
public abstract ShortVector unslice(int origin, Vector<Short> w, int part)
slice(). Это операция между полосами, которая переставляет элементы полос текущего вектора в направлении конца и вставляет их в логическую пару фоновых векторов. Однако возвращается только один из этой пары. Фон формируется дублированием второго входного вектора. (При этом в выходных данных никогда не будет двух копий одной входной полосы.) Полоса входного вектора с номером N копируется в полосу origin+N первого фонового вектора, если такая полоса существует, иначе — в полосу origin+N-VLENGTH второго фонового вектора (наличие которой гарантировано). Возвращается первый или второй фоновый вектор с обновлёнными данными вставленного среза. Число part, равное нулю или единице, выбирает первый или второй обновлённый фоновый вектор.
Значение origin должно находиться в включительном диапазоне 0..VLENGTH. В крайних случаях значения v.unslice(0,w,0) и v.unslice(VLENGTH,w,1) возвращают v, а значения v.unslice(0,w,1) и v.unslice(VLENGTH,w,0) возвращают w.
- Определено в:
-
unsliceв классеVector<Short> - Параметры:
-
origin— первая выходная полоса, в которую будет помещён срез -
w— фоновый вектор, в который (в виде двух копий) будет вставлен срез -
part— номер части результата (ноль или единица) - Возвращает:
- первую или вторую часть пары фоновых векторов
w, обновлённую путём вставки этого вектора с указанным начальным смещением - См. также:
unslice
public abstract ShortVector unslice(int origin, Vector<Short> w, int part, VectorMask<Short> m)
slice(). Это операция между полосами, которая переставляет элементы полос текущего вектора в направлении начала и вставляет его полосы (если они выбраны маской) в логическую пару фоновых векторов. Как и в версии этого метода без маски, возвращается только один из векторов пары, выбранный числом part. Для каждой полосы N, выбранной маской, значение полосы копируется в полосу origin+N первого фонового вектора, если такая полоса существует, иначе — в полосу origin+N-VLENGTH второго фонового вектора (наличие которой гарантировано). Фоновые полосы сохраняют исходные значения, если соответствующие входные полосы N не выбраны маской. Возвращается первый или второй фоновый вектор с обновлёнными выбранными полосами вставленного среза. Число part, равное нулю или единице, выбирает первый или второй обновлённый фоновый вектор.
- Определено в:
-
unsliceв классеVector<Short> - Параметры:
-
origin— первая выходная полоса, в которую будет помещён срез -
w— фоновый вектор, в который (в виде двух копий) будет вставлен срез, если соответствующие полосы выбраны вm -
part— номер части результата (ноль или единица) -
m— маска, управляющая выбором полос из текущего вектора - Возвращает:
- первую или вторую часть пары фоновых векторов
w, обновлённую путём вставки выбранных полос этого вектора с указанным начальным смещением - См. также:
unslice
public abstract ShortVector unslice(int origin)
unslice(), этот метод возвращает только первый вектор из пары фоновых векторов. Это вспомогательный метод, возвращающий результат unslice
(origin, broadcast(0), 0). Его также можно рассматривать просто как сдвиг между полосами от более ранних к более поздним, при котором освободившиеся полосы в начале вектора заполняются нулями. В таком представлении величина сдвига равна origin. rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> shuffle)
N перестановки и каждого индекса исходной полосы I=s.wrapIndex(s.laneSource(N)) в перестановке выходная полоса N получает значение входного вектора из полосы I. rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> s, VectorMask<Short> m)
N перестановки и каждого индекса исходной полосы I=s.wrapIndex(s.laneSource(N)) в перестановке выходная полоса N получает значение входного вектора из полосы I, если полоса выбрана маской. В противном случае выходной полосе N присваивается ноль. Этот метод возвращает результат выполнения следующего псевдокода:
Vector<E> r = this.rearrange(s);
return broadcast(0).blend(r, m);
rearrange
public abstract ShortVector rearrange(VectorShuffle<Short> s, Vector<Short> v)
v). Для каждой полосы N перестановки и каждого индекса исходной полосы I=s.laneSource(N) в перестановке выходная полоса N получает значение первого вектора из полосы I, если I>=0. В противном случае исключительный индекс I приводится к диапазону добавлением к нему VLENGTH и используется для индексации второго вектора по индексу I+VLENGTH. Этот метод возвращает результат выполнения следующего псевдокода:
Vector<E> r1 = this.rearrange(s.wrapIndexes());
// or else: r1 = this.rearrange(s, s.laneIsValid());
Vector<E> r2 = v.rearrange(s.wrapIndexes());
return r2.blend(r1,s.laneIsValid());
compress
public abstract ShortVector compress(VectorMask<Short> m)
N маски, если маска для полосы N установлена, элемент входного вектора из полосы N выбирается и помещается в выходной вектор подряд, начиная с полосы 0. Все оставшиеся верхние полосы выходного вектора, если таковые имеются, устанавливаются в ноль. expand
public abstract ShortVector expand(VectorMask<Short> m)
N маски, если маска для полосы N установлена, следующий смежный элемент входного вектора, начиная с полосы 0, выбирается и помещается в выходной вектор в полосу N. Все оставшиеся полосы выходного вектора, если таковые имеются, устанавливаются в ноль. selectFrom
public abstract ShortVector selectFrom(Vector<Short> v)
v. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам из текущего вектора. Эта операция между полосами переставляет элементы полос вектора-аргумента под управлением данного вектора. Для каждой полосы N этого вектора и каждого значения полосы I=wrapIndex(this.lane(N)) в этом векторе выходная полоса N получает значение вектора-аргумента из полосы I. Таким образом, результат содержит только значения, хранящиеся в векторе-аргументе v, но представленные в порядке, зависящем от значений индексов в this. Результат совпадает с выражением v.rearrange(this.toShuffle()). - Определено в:
-
selectFromв классеVector<Short> - Параметры:
-
v— вектор, предоставляющий значения результата - Возвращает:
- перестановку элементов полос
v - См. также:
selectFrom
public abstract ShortVector selectFrom(Vector<Short> s, VectorMask<Short> m)
v. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам из текущего вектора. Полосы, не выбранные маской, получают ноль, а не значение из таблицы. Эта операция между полосами переставляет элементы полос вектора-аргумента под управлением данного вектора и маски. Результат совпадает с выражением v.rearrange(this.toShuffle(), m). - Определено в:
-
selectFromв классеVector<Short> - Параметры:
-
s— вектор, предоставляющий значения результата -
m— маска, управляющая выбором изv - Возвращает:
- перестановку элементов полос
v - См. также:
selectFrom
public abstract ShortVector selectFrom(Vector<Short> v1, Vector<Short> v2)
v1 и третьего вектора v2. Таким образом, второй и третий векторы служат таблицей, элементы которой выбираются по индексам из этого вектора. Эта операция между полосами переставляет элементы полос векторов-аргументов под управлением этого вектора. Для каждой полосы N этого вектора и каждого значения полосы I=wrapIndex(this.lane(N) в этом векторе выходная полоса N получает значение второго вектора из полосы I, если I < VLENGTH. В противном случае выходная полоса N получает значение третьего вектора из полосы I - VLENGTH. Здесь VLENGTH — результат this.length(), а для целочисленных значений wrapIndex вычисляет результат Math.floorMod(E, 2 * VLENGTH), где E — индекс, который необходимо привести к диапазону. Если VLENGTH является степенью двойки, результат также равен E & (2 * VLENGTH - 1). Для значений с плавающей запятой wrapIndex вычисляет Math.floorMod(convert(E), 2 * VLENGTH), где convert преобразует значение с плавающей запятой в целочисленное значение с таким же количеством бит представления, как при преобразовании значения типа double в значение типа long ((long)doubleVal) или значения типа float в значение типа int ((int)floatVal). Таким образом, результат содержит только значения, хранящиеся в векторах-аргументах v1 и v2, но представленные в порядке, зависящем от значений индексов в this. Результат для целочисленных значений совпадает с выражением v1.rearrange(
this.lanewise(VectorOperators.AND, 2 * VLENGTH - 1).toShuffle(),
v2)
VLENGTH является степенью двойки. Поэлементная операция AND возвращает вектор, элементы которого находятся в диапазоне [0, 2 * VLENGTH - 1]). Преобразование в перестановку приводит к частично приведённой к диапазону перестановке, индексы которой находятся в диапазоне [-VLENGTH, VLENGTH - 1]), где исключительные индексы используются для выбора элементов третьего вектора. - Определено в:
-
selectFromв классеVector<Short> - Параметры:
-
v1— первый входной вектор -
v2— второй входной вектор - Возвращает:
- перестановку элементов полос
v1иv2 - См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(Vector<Short> bits, Vector<Short> mask)
(a&~c)|(b&c) для каждой полосы. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты для смешивания с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- результат побитового смешивания заданных битов с текущим вектором под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(short bits, short mask)
(a&~c)|(b&c) для каждой полосы. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты для смешивания с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- результат побитового смешивания заданных битов с текущим вектором под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(short bits, Vector<Short> mask)
(a&~c)|(b&c) для каждой полосы. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты для смешивания с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- результат побитового смешивания заданных битов с текущим вектором под управлением побитовой маски
- См. также:
bitwiseBlend
public final ShortVector bitwiseBlend(Vector<Short> bits, short mask)
(a&~c)|(b&c) для каждой полосы. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits— входные биты для смешивания с текущим вектором -
mask— побитовая маска, разрешающая смешивание входных битов - Возвращает:
- результат побитового смешивания заданных битов с текущим вектором под управлением побитовой маски
- См. также:
reduceLanes
public abstract short reduceLanes(VectorOperators.Associative op)
Некоторые операции редукции не допускают произвольного изменения порядка операндов, но включены здесь благодаря своей полезности.
- В случае
FIRST_NONZEROредукция возвращает значение из ненулевой полосы с наименьшим номером. - Все остальные операции редукции являются полностью коммутативными и ассоциативными. Реализация может выбрать любой порядок обработки, но всегда получит одинаковый результат.
- Параметры:
-
op— операция, используемая для объединения значений полос - Возвращает:
- накопленный результат
- Исключения:
-
UnsupportedOperationException— если этот вектор не поддерживает запрошенную операцию - См. также:
reduceLanes
public abstract short reduceLanes(VectorOperators.Associative op, VectorMask<Short> m)
Если ни один элемент не выбран, возвращается значение, являющееся нейтральным элементом для конкретной операции.
- Если операция —
ADD,XOR,ORилиFIRST_NONZERO, нейтральным элементом является ноль, значениеshortпо умолчанию. - Если операция —
MUL, нейтральным элементом является единица. - Если операция —
AND, нейтральным элементом является минус один (все биты установлены). - Если операция —
MAX, нейтральным элементом являетсяShort.MIN_VALUE. - Если операция —
MIN, нейтральным элементом являетсяShort.MAX_VALUE.
Некоторые операции редукции не поддерживают произвольную перестановку операндов, но включены сюда благодаря своей полезности.
- В случае
FIRST_NONZEROредукция возвращает значение из ненулевой полосы с наименьшим номером. - Все остальные операции редукции полностью коммутативны и ассоциативны. Реализация может выбрать любой порядок обработки, но всегда получит один и тот же результат.
- Параметры:
-
op— операция, используемая для объединения значений полос -
m— маска, определяющая выбор полос - Возвращает:
- результат редукции, накопленный по значениям выбранных полос
- Вызывает:
-
UnsupportedOperationException— если этот вектор не поддерживает запрошенную операцию - См. также:
lane
public abstract short lane(int i)
i
- Параметры:
-
i— индекс полосы - Возвращает:
- элемент полосы с индексом
i - Вызывает:
-
IllegalArgumentException— если индекс находится вне допустимого диапазона (< 0 || >= length())
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— если для какой-либо полосыNв векторе выполняетсяoffset+N < 0илиoffset+N >= a.length
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— если для какой-либо полосыNв векторе, для которой установлена маска, выполняетсяoffset+N < 0илиoffset+N >= a.length
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 в результате. Этот метод представляет собой ограниченную версию более общего, но реже используемого метода с изменением формы convertShape(). Результат этого метода совпадает с выражением this.convertShape(conv, rsp, part), где выходной набор характеристик — rsp=this.species().withLanes(FTYPE.class).
Совместное влияние неизменности формы и изменения размера элементов может привести к тому, что входной и выходной наборы характеристик будут иметь разное число элементов, вызывая расширение или сжатие и требуя выбора или вставки. Концептуально входные данные преобразуются поэлементно в логический результат, содержащий все преобразованные элементы, что приводит к логическому коэффициенту расширения ML = |FTYPE|/|ETYPE|. Затем результат копируется в выходные данные, размер которых может точно совпадать с результатом (без изменений), быть меньше (требуется выбор) или больше (требуется вставка).
Логическое поэлементное преобразование
Каждое конкретное преобразование описывается константой преобразования в классе VectorOperators. Для каждого оператора преобразования заданы тип области определения и тип области значений. Тип области определения должен точно совпадать с типом элементов входного вектора, а тип области значений определяет тип элементов выходных векторов.
Оператор поэлементного преобразования можно классифицировать как преобразование без изменения размера, расширяющее или сжимающее — в зависимости от того, равен ли размер в битах его типа области определения размеру в битах типа области значений, меньше или больше него соответственно.
Независимо от этого, операции поэлементного преобразования также можно классифицировать как переинтерпретирующие или преобразующие значения — в зависимости от того, копирует ли преобразование биты представления без изменений или меняет их, чтобы сохранить (частично или полностью) логическое значение входных данных.
Если переинтерпретирующее преобразование сжимает данные, оно отбрасывает старшие биты входных данных. Если оно расширяет данные, старшие биты выходных данных, которым не соответствуют входные биты, заполняются нулями.
Расширяющее преобразование, например S2I (значение short в int), принимает скалярное значение и представляет его в более широком формате (всегда с некоторой избыточностью информации). Сжимающее преобразование, например D2F (значение double в float), принимает скалярное значение и представляет его в более узком формате (всегда с некоторой потерей информации). Некоторые преобразования без изменения размера также могут приводить к потере информации, например L2D (значение long в double) или F2I (значение float в int). Переинтерпретирующие преобразования без изменения размера не приводят к потере данных, если только побитовое значение каким-либо образом не является допустимым для выходного типа. Преобразование битового шаблона NaN может отбросить биты мантиссы NaN.
Неизменность формы может потребовать выбора или вставки
Эта классификация поэлементных операторов как не изменяющих размер, расширяющих или сжимающих важна, поскольку, если не указано иное, операции преобразования никогда не меняют форму вектора, независимо от того, как они могут менять размер элементов.
Для управления этими расширениями и сжатиями параметр part выбирает частичные результаты расширения или задаёт положение вставки результатов сжатия в выходные данные. Для преобразований с неизменной формой (MP=1) возможны следующие случаи:
- Поэлементный оператор преобразования без изменения размера (
|ETYPE|=|FTYPE|): входные данные, логический результат и выходные данные имеют одинаковое число элементов и размер в битах (ML=MP=1). Логический результат точно помещается в выходные данные, и всегда выполняетсяpart=0.Все преобразованные данные возвращаются в одном выходном векторе, без потери элементов.
- Поэлементный расширяющий оператор преобразования (
|ETYPE|<|FTYPE|): логическое расширениеML=|FTYPE|/|ETYPE|>1означает, что логический результат вMS=MLраз больше выходных данных.Число
partв диапазоне[0..MS-1]выбирает один изMSразличных блоков поVLENGTH/MSэлементов логического результата, начинающийся с начального элементаpart*VLENGTH/MS. Этот выбранный блок копируется в выходные данные и полностью заполняет их. Остальная часть логического результата теряется.Группа таких выходных векторов с
MSнепересекающимися выборками логических результатов может вручную представлять полный логический результат преобразования. - Поэлементный сжимающий оператор преобразования (
|ETYPE|>|FTYPE|): логическое сжатиеML=|FTYPE|/|ETYPE|<1означает, что выходные данные вMO=1/MLраз больше логического результата.Число
partв диапазоне[-(MO-1)..0]вставляет всеVLENGTHэлементов логического результата в выходные данные, начиная с начального элемента-part*VLENGTH. Всего имеетсяVLENGTH*MOвыходных элементов; элементы, не содержащие преобразованных входных значений, заполняются нулями.Группу таких выходных векторов, в которых части логического результата направлены в
MOнепересекающихся блока, можно вручную собрать с помощью оператора побитового XOR или (для чисел с плавающей запятой) оператораFIRST_NONZERO.
Например, преобразование из byte в long (логический коэффициент расширения ML=8) отбросит 87,5 % входных значений, чтобы выбрать оставшиеся 12,5 % и преобразовать их в более вместительные элементы long выходного вектора. Обратное преобразование вернёт все большие результаты, но 87,5 % элементов выходного вектора останутся неиспользованными и будут заполнены нулевыми битами.
- Определено в:
-
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(), чтобы упростить анализ кода. В противном случае это операция с изменением формы, которая может иметь особые издержки реализации.
Совместное влияние изменения формы и размера элементов может привести к тому, что входной и выходной наборы характеристик будут иметь разное число элементов, вызывая расширение или сжатие и требуя выбора или вставки. Концептуально входные данные преобразуются поэлементно в логический результат, содержащий все преобразованные элементы, что приводит к логическому коэффициенту расширения ML = |FTYPE|/|ETYPE|. Затем результат копируется в выходные данные, размер которых может точно совпадать с результатом (без изменений), быть меньше (требуется выбор) или больше (требуется вставка).
- Точное соответствие (без изменений): расширение или сжатие физической формы совпадает с расширением или сжатием элементов (
MP=ML). Должно выполнятьсяpart=0. - Логический результат в
MS>1раз больше формы выходных данных (выбор): числоpartв диапазоне[0..MS-1]определяет, какая изMSразличных частей логического результата выбирается для выходных данных. Остальная часть логического результата теряется. - Форма выходных данных в
MO>1раз больше логического результата (вставка): числоpartв диапазоне[-(MO-1)..0]определяет, в какую изMOразличных позиций выходных данных вставляется логический результат. Остальная часть выходных данных заполняется нулевыми битами.
Следующий псевдокод иллюстрирует поведение этого метода для преобразований без изменения размера, а также для преобразований с выбором или вставкой. (Этот псевдокод также применим к методу с неизменной формой, но с ограничениями на форму выходного набора характеристик.) Обратите внимание: для любой конкретной комбинации оператора преобразования и форм применим только один из трёх путей выполнения.
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) { // MS=MO=1 => in-place
assert part == 0; //else AIOOBE
physical = logical;
} else if (domlen > ranlen) { // MS>1 => selection
int MS = domlen / ranlen;
assert 0 <= part && part < MS; //else AIOOBE
int origin = part * ranlen;
physical = Arrays.copyOfRange(logical, origin, origin + ranlen);
} else { // (domlen < ranlen) // MO>1 => insertion, padding
int MO = ranlen / domlen;
assert 0 >= part && part > -MO; //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.