Класс ByteVector
public abstract class ByteVector extends Vector<E>
Vector, представляющий собой упорядоченную неизменяемую последовательность byte значений.Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final VectorSpecies<Byte> |
SPECIES_128 |
Вид, представляющий ByteVector с размером VectorShape.S_128_BIT. |
static final VectorSpecies<Byte> |
SPECIES_256 |
Вид, представляющий ByteVector с размером VectorShape.S_256_BIT. |
static final VectorSpecies<Byte> |
SPECIES_512 |
Вид, представляющий ByteVector с размером VectorShape.S_512_BIT. |
static final VectorSpecies<Byte> |
SPECIES_64 |
Вид, представляющий ByteVector с размером VectorShape.S_64_BIT. |
static final VectorSpecies<Byte> |
SPECIES_MAX |
Предпочитаемый вид для ByteVector с размером VectorShape.S_Max_BIT. |
static final VectorSpecies<Byte> |
SPECIES_PREFERRED |
Предпочитаемый вид для ByteVector. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final ByteVector |
abs() |
Возвращает абсолютное значение этого вектора. |
final ByteVector |
add |
Добавляет этот вектор к трансляции входного скаляра. |
final ByteVector |
add |
Добавляет этот вектор к трансляции входного скаляра, выбирая элементы дорожки, управляемые маской. |
final ByteVector |
add |
Добавляет этот вектор ко второму входному вектору. |
final ByteVector |
add |
Добавляет этот вектор ко второму входному вектору, выбирая дорожки под управлением маски. |
abstract ByteVector |
addIndex |
Добавляет дорожки этого вектора к их соответствующим номерам дорожек, масштабированным заданной константой. |
final ByteVector |
and |
Вычисляет поразрядную логическую конъюнкцию ( &) этого вектора и скаляра. |
final ByteVector |
and |
Вычисляет поразрядную логическую конъюнкцию ( &) этого вектора и второго входного вектора. |
final ByteVector |
bitwiseBlend |
Комбинирует биты вектора и скаляра под управлением другого скаляра, который предоставляет биты маски. |
final ByteVector |
bitwiseBlend |
Комбинирует биты вектора и скаляра под управлением другого вектора, который предоставляет биты маски. |
final ByteVector |
bitwiseBlend |
Комбинирует биты двух векторов под управлением скаляра, который предоставляет биты маски. |
final ByteVector |
bitwiseBlend |
Комбинирует биты двух векторов под управлением третьего, который предоставляет биты маски. |
final ByteVector |
blend |
Заменяет выбранные дорожки этого вектора значением скаляра под управлением маски. |
final ByteVector |
blend |
Заменяет выбранные дорожки этого вектора значением скаляра под управлением маски. |
abstract ByteVector |
blend |
Заменяет выбранные дорожки этого вектора соответствующими дорожками из второго входного вектора под управлением маски. |
abstract ByteVector |
broadcast |
Возвращает вектор того же типа, что и этот, где все элементы дорожки установлены в примитивное значение e. |
abstract ByteVector |
broadcast |
Возвращает вектор того же типа, что и этот, где все элементы дорожки установлены в примитивное значение e. |
static ByteVector |
broadcast |
Возвращает вектор заданного типа, где все элементы дорожки установлены в примитивное значение e. |
static ByteVector |
broadcast |
Возвращает вектор заданного типа, где все элементы дорожки установлены в примитивное значение e. |
final <F> Vector<F> |
castShape |
Удобный метод для преобразования вектора из одного типа дорожки в другой, с переустановкой, если необходимо, при изменении размеров дорожки. |
final <F> Vector<F> |
check |
Проверяет, что у этого вектора заданный тип элемента, и возвращает этот вектор без изменений. |
final <F> Vector<F> |
check |
Проверяет, что у этого вектора заданный вид, и возвращает этот вектор без изменений. |
abstract VectorMask<Byte> |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения. |
final VectorMask<Byte> |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения на дорожках, выбранных маской. |
abstract VectorMask<Byte> |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения. |
final VectorMask<Byte> |
compare |
Тестирует этот вектор, сравнивая его с входным скаляром в соответствии с заданной операцией сравнения на дорожках, выбранных маской. |
abstract VectorMask<Byte> |
compare |
Тестирует этот вектор, сравнивая его с другим входным вектором в соответствии с заданной операцией сравнения. |
final VectorMask<Byte> |
compare |
Тестирует этот вектор, сравнивая его с другим входным вектором в соответствии с заданной операцией сравнения на дорожках, выбранных маской. |
final <F> Vector<F> |
convert |
Преобразует этот вектор в вектор с той же формой и новым типом элемента, преобразовывая значения дорожек из текущего ETYPE в новый тип дорожки (называемый FTYPE здесь) в соответствии с указанным преобразованием. |
abstract <F> Vector<F> |
convertShape |
Преобразует этот вектор в вектор заданного вида, формы и типа элемента, преобразовывая значения дорожек из текущего ETYPE в новый тип дорожки (называемый FTYPE здесь) в соответствии с указанным преобразованием. |
final ByteVector |
div |
Делит этот вектор на трансляцию входного скаляра. |
final ByteVector |
div |
Делит этот вектор на трансляцию входного скаляра, выбирая элементы дорожки, управляемые маской. |
final ByteVector |
div |
Делит этот вектор на второй входной вектор. |
final ByteVector |
div |
Делит этот вектор на второй входной вектор под управлением маски. |
final VectorMask<Byte> |
eq |
Проверяет, равен ли этот вектор входному скаляру. |
final VectorMask<Byte> |
eq |
Проверяет, равен ли этот вектор другому входному вектору. |
final boolean |
equals |
Указывает, идентичен ли этот вектор какому-либо другому объекту. |
static ByteVector |
fromArray |
Загружает вектор из массива типа byte[], начиная со смещения. |
static ByteVector |
fromArray |
Собирает новый вектор, состоящий из элементов массива типа byte[], используя индексы, полученные путём добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ByteVector |
fromArray |
Собирает новый вектор, составленный из элементов массива типа byte[], под управлением маски и используя индексы, полученные путём добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ByteVector |
fromArray |
Загружает вектор из массива типа byte[], начиная со смещения и используя маску. |
static ByteVector |
fromBooleanArray |
Загружает вектор из массива типа boolean[], начиная со смещения. |
static ByteVector |
fromBooleanArray |
Собирает новый вектор, составленный из элементов массива типа boolean[], используя индексы, полученные путём добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ByteVector |
fromBooleanArray |
Собирает новый вектор, составленный из элементов массива типа boolean[], под управлением маски и используя индексы, полученные путём добавления фиксированного offset к ряду вторичных смещений из карты индексов. |
static ByteVector |
fromBooleanArray |
Загружает вектор из массива типа boolean[], начиная со смещения и используя маску. |
static ByteVector |
fromByteArray |
Загружает вектор из массива байтов, начиная со смещения. |
static ByteVector |
fromByteArray |
Загружает вектор из массива байтов, начиная со смещения и используя маску. |
static ByteVector |
fromByteBuffer |
Загружает вектор из байтового буфера, начиная со смещения в байтовом буфере. |
static ByteVector |
fromByteBuffer |
Загружает вектор из байтового буфера, начиная со смещения в байтовом буфере и используя маску. |
final int |
hashCode() |
Возвращает значение хэш-кода для вектора. |
final void |
intoArray |
Хранит этот вектор в массиве типа byte[], начиная со смещения. |
final void |
intoArray |
Разбрасывает этот вектор в массив типа byte[], используя индексы, полученные путём добавления фиксированного значения offset к ряду вторичных смещений от карты индексов. |
final void |
intoArray |
Разбрасывает этот вектор в массив типа byte[], под управлением маски, используя индексы, полученные путём добавления фиксированного значения offset к ряду вторичных смещений от карты индексов. |
final void |
intoArray |
Хранит этот вектор в массиве типа byte[], начиная со смещения и используя маску. |
final void |
intoBooleanArray |
Хранит этот вектор в массиве типа boolean[], начиная со смещения. |
final void |
intoBooleanArray |
Разбрасывает этот вектор в массив типа boolean[], используя индексы, полученные путём добавления фиксированного значения offset к ряду вторичных смещений от карты индексов. |
final void |
intoBooleanArray |
Разбрасывает этот вектор в массив типа boolean[], под управлением маски, используя индексы, полученные путём добавления фиксированного значения offset к ряду вторичных смещений от карты индексов. |
final void |
intoBooleanArray |
Хранит этот вектор в массиве типа boolean[], начиная со смещения и используя маску. |
final void |
intoByteArray |
Хранит этот вектор в массиве байтов, начиная со смещения, используя явное указание порядка байтов. |
final void |
intoByteArray |
Хранит этот вектор в массиве байтов, начиная со смещения, используя явное указание порядка байтов и маску. |
final void |
intoByteBuffer |
Хранит этот вектор в буфере байтов, начиная со смещения, используя явное указание порядка байтов. |
final void |
intoByteBuffer |
Хранит этот вектор в буфере байтов, начиная со смещения, используя явное указание порядка байтов и маску. |
abstract byte |
lane |
Получает элемент канала по индексу канала i
|
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значением скаляра, транслированного на все каналы. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значением транслированного скаляра, с выбором элементов каналов, управляемых маской. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значением транслированного скаляра. |
final ByteVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями второго входного вектора, с выбором элементов каналов, управляемых маской. |
abstract ByteVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями второго входного вектора. |
final ByteVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями второго входного вектора, с выбором элементов каналов, управляемых маской. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значениями двух транслированных скаляров. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значениями двух транслированных скаляров, с выбором элементов каналов, управляемых маской. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и транслированного скаляра. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и транслированного скаляра, с выбором элементов каналов, управляемых маской. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и транслированного скаляра. |
final ByteVector |
lanewise |
Объединяет значения каналов этого вектора со значениями другого вектора и транслированного скаляра, с выбором элементов каналов, управляемых маской. |
abstract ByteVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями каналов второго и третьего входных векторов. |
final ByteVector |
lanewise |
Объединяет соответствующие значения каналов этого вектора со значениями каналов второго и третьего входных векторов, с выбором элементов каналов, управляемых маской. |
abstract ByteVector |
lanewise |
Осуществляет операцию над значениями каналов этого вектора. |
final ByteVector |
lanewise |
Осуществляет операцию над значениями каналов этого вектора, с выбором элементов каналов, управляемых маской. |
final VectorMask<Byte> |
lt |
Проверяет, меньше ли этот вектор входного скаляра. |
final VectorMask<Byte> |
lt |
Проверяет, меньше ли этот вектор другого входного вектора. |
final VectorMask<Byte> |
maskAll |
Возвращает маску того же вида, что и этот вектор, где каждый канал установлен или сброшен в соответствии с заданным одиночным булевым значением, которое транслируется на все каналы. |
final ByteVector |
max |
Вычисляет большее значение между этим вектором и транслированным входным скаляром. |
final ByteVector |
max |
Вычисляет большее значение между этим вектором и вторым входным вектором. |
final ByteVector |
min |
Вычисляет меньшее значение между этим вектором и транслированным входным скаляром. |
final ByteVector |
min |
Вычисляет меньшее значение между этим вектором и вторым входным вектором. |
final ByteVector |
mul |
Умножает этот вектор на транслированный входной скаляр. |
final ByteVector |
mul |
Умножает этот вектор на транслированный входной скаляр, выбирая элементы каналов, управляемые маской. |
final ByteVector |
mul |
Умножает этот вектор на второй входной вектор. |
final ByteVector |
mul |
Умножает этот вектор на второй входной вектор под управлением маски. |
final ByteVector |
neg() |
Изменяет знак этого вектора. |
final ByteVector |
not() |
Вычисляет побитовое логическое отрицание ( ~) этого вектора. |
final ByteVector |
or |
Вычисляет побитовое логическое дизъюнкцию ( |) этого вектора и скаляра. |
final ByteVector |
or |
Вычисляет побитовое логическое дизъюнкцию ( |) этого вектора и второго входного вектора. |
abstract ByteVector |
rearrange |
Переупорядочивает элементы каналов этого вектора, выбирая каналы под управлением определённого сдвига. |
abstract ByteVector |
rearrange |
Переупорядочивает элементы каналов двух векторов, выбирая каналы под управлением определённого сдвига, используя как обычные, так и исключительные индексы в сдвиге для управления данными. |
abstract ByteVector |
rearrange |
Переупорядочивает элементы каналов этого вектора, выбирая каналы под управлением определённого сдвига и маски. |
abstract byte |
reduceLanes |
Возвращает значение, накопленное из всех каналов этого вектора. |
abstract byte |
reduceLanes |
Возвращает значение, накопленное из выбранных каналов этого вектора, контролируемых маской. |
final ByteVector |
reinterpretAsBytes() |
Представляет этот вектор как вектор той же формы и содержимого, но с типом канала byte, где байты извлекаются из каналов в соответствии с порядком little-endian. |
DoubleVector |
reinterpretAsDoubles() |
Переинтерпретирует этот вектор как вектор той же формы и содержимого, но с типом значений в элементах double, где элементы собираются из последовательных байтов в соответствии с порядком little-endian. |
FloatVector |
reinterpretAsFloats() |
Переинтерпретирует этот вектор как вектор той же формы и содержимого, но с типом значений в элементах float, где элементы собираются из последовательных байтов в соответствии с порядком little-endian. |
IntVector |
reinterpretAsInts() |
Переинтерпретирует этот вектор как вектор той же формы и содержимого, но с типом значений в элементах int, где элементы собираются из последовательных байтов в соответствии с порядком little-endian. |
LongVector |
reinterpretAsLongs() |
Переинтерпретирует этот вектор как вектор той же формы и содержимого, но с типом значений в элементах long, где элементы собираются из последовательных байтов в соответствии с порядком little-endian. |
ShortVector |
reinterpretAsShorts() |
Переинтерпретирует этот вектор как вектор той же формы и содержимого, но с типом значений в элементах short, где элементы собираются из последовательных байтов в соответствии с порядком little-endian. |
abstract ByteVector |
selectFrom |
Используя значения индексов, хранящиеся в элементах этого вектора, собрать значения, хранящиеся во втором векторе v. |
abstract ByteVector |
selectFrom |
Используя значения индексов, хранящиеся в элементах этого вектора, собрать значения, хранящиеся во втором векторе, под управлением маски. |
abstract ByteVector |
slice |
Вырезает сегмент смежных элементов, начиная с заданного origin элемента в текущем векторе. |
abstract ByteVector |
slice |
Вырезает сегмент смежных элементов, начиная с заданного origin элемента в текущем векторе и продолжая (при необходимости) в следующий вектор. |
final ByteVector |
slice |
Вырезает сегмент смежных элементов под управлением маски, начиная с заданного origin элемента в текущем векторе и продолжая (при необходимости) в следующий вектор. |
final VectorSpecies<Byte> |
species() |
Возвращает вид этого вектора. |
final ByteVector |
sub |
Вычитает входной скаляр из этого вектора. |
final ByteVector |
sub |
Вычитает входной скаляр из этого вектора под управлением маски. |
final ByteVector |
sub |
Вычитает второй входной вектор из этого вектора. |
final ByteVector |
sub |
Вычитает второй входной вектор из этого вектора под управлением маски. |
abstract VectorMask<Byte> |
test |
Проверяет элементы этого вектора в соответствии с заданной операцией. |
final VectorMask<Byte> |
test |
Проверяет выбранные элементы этого вектора в соответствии с заданной операцией. |
final byte[] |
toArray() |
Возвращает массив типа byte[], содержащий все значения элементов. |
final double[] |
toDoubleArray() |
Возвращает массив типа double[], содержащий все значения элементов, преобразованные к типу double. |
final int[] |
toIntArray() |
Возвращает массив типа int[], содержащий все значения элементов, преобразованные к типу int. |
final long[] |
toLongArray() |
Возвращает строковое представление этого вектора в форме "[0,1,2...]", отображающее значения элементов этого вектора в порядке элементов. |
abstract ByteVector |
unslice |
Инвертирует срез slice(), вставляя текущий вектор в качестве среза в "фоновый" ввод с нулевыми значениями элементов. |
abstract ByteVector |
unslice |
Инвертирует срез slice(), вставляя текущий вектор в качестве среза в другой "фоновый" входной вектор, который рассматривается как один из входов гипотетической последующей slice() операции. |
abstract ByteVector |
unslice |
Инвертирует срез slice(), вставляя (под управлением маски) текущий вектор в качестве среза в другой "фоновый" входной вектор, который рассматривается как один из входов гипотетической последующей slice() операции. |
final Vector<?> |
viewAsFloatingLanes() |
Представляет этот вектор как вектор той же формы, длины и содержимого, но с типом элементов, являющимся типом с плавающей точкой. |
final ByteVector |
viewAsIntegralLanes() |
Представляет этот вектор как вектор той же формы, длины и содержимого, но с типом элементов, который не является типом с плавающей точкой. |
abstract ByteVector |
withLane |
Заменяет элемент элемента вектора по индексу элемента i значением e. |
static ByteVector |
zero |
Возвращает вектор заданного вида, где все элементы элементов равны нулю, стандартное значение по умолчанию. |
Методы, объявленные в классе jdk.incubator.vector.Vector
bitSize, byteSize, elementSize, elementType, length, reduceLanesToLong, reduceLanesToLong, reinterpretShape, shape, toShuffle
Методы, объявленные в классе jdk.internal.vm.vector.VectorSupport.VectorPayload
getPayload
Подробное описание полей
SPECIES_64
public static final VectorSpecies<Byte> SPECIES_64
ByteVectorы VectorShape.S_64_BIT.SPECIES_128
public static final VectorSpecies<Byte> SPECIES_128
ByteVectorы VectorShape.S_128_BIT.SPECIES_256
public static final VectorSpecies<Byte> SPECIES_256
ByteVectorы VectorShape.S_256_BIT.SPECIES_512
public static final VectorSpecies<Byte> SPECIES_512
ByteVectorы VectorShape.S_512_BIT.SPECIES_MAX
public static final VectorSpecies<Byte> SPECIES_MAX
ByteVectorы VectorShape.S_Max_BIT.SPECIES_PREFERRED
public static final VectorSpecies<Byte> SPECIES_PREFERRED
ByteVectorов. Предпочтительный вид — это вид максимального размера бита для платформы.Подробное описание методов
zero
public static ByteVector zero(VectorSpecies<Byte> species)
- Параметры:
-
species- вид желаемого нулевого вектора - Возвращает:
- нулевой вектор
broadcast
public abstract ByteVector broadcast(byte e)
e. Содержимое текущего вектора отбрасывается; для этой операции важен только вид. Этот метод возвращает значение этого выражения: ByteVector.broadcast(this.species(), e).
- Примечание API:
- В отличие от аналогичного метода с именем
broadcast()в супертипеVector, этому методу не нужно проверять свой аргумент и он не может выброситьIllegalArgumentException. Поэтому этот метод предпочтительнее метода супертипа. - Параметры:
-
e- значение для широковещательной передачи - Возвращает:
- вектор, где все элементы дорожки установлены в примитивное значение
e - См. также:
broadcast
public static ByteVector broadcast(VectorSpecies<Byte> species, byte e)
e. - Параметры:
-
species- вид желаемого вектора -
e- значение для широковещательной передачи - Возвращает:
- вектор, где все элементы дорожки установлены в примитивное значение
e - См. также:
broadcast
public abstract ByteVector 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<Byte> - Примечание API:
- При работе с подтипами векторов, такими как
ByteVector, обычно выбирается более сильно типизированный метод более сильно типизированный метод. Его можно явно выбрать с помощью приведения типов:v.broadcast((byte)e). Два выражения дадут численно идентичные результаты. - Параметры:
-
e- значение для широковещательной передачи - Возвращает:
- вектор, где все элементы дорожки установлены в примитивное значение
e - См. также:
broadcast
public static ByteVector broadcast(VectorSpecies<Byte> species, long e)
e. Значение long должно быть точно представимо для ETYPE вида вектора, чтобы e==(long)(ETYPE)e.- Параметры:
-
species- вид желаемого вектора -
e- значение для широковещательной передачи - Возвращает:
- вектор, где все элементы дорожки установлены в примитивное значение
e - Исключения:
-
IllegalArgumentException- если данное значениеlongне может быть представленоETYPEвектора - См. также:
lanewise
public abstract ByteVector lanewise(VectorOperators.Unary op)
- Определено в:
-
lanewiseв классеVector<Byte> - Параметры:
-
op- операция, используемая для обработки значений дорожек - Возвращает:
- результат применения операции по дорожкам к входному вектору
- См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Unary op, VectorMask<Byte> m)
- Определено в:
-
lanewiseв классеVector<Byte> - Параметры:
-
op- операция, используемая для обработки значений дорожек -
m- маска, управляющая выбором дорожек - Возвращает:
- результат применения операции по дорожкам к входному вектору
- См. также:
lanewise
public abstract ByteVector lanewise(VectorOperators.Binary op, Vector<Byte> v)
- Определено в:
-
lanewiseв классеVector<Byte> - Параметры:
-
op- операция, используемая для объединения значений дорожек -
v- входной вектор - Возвращает:
- результат применения операции по дорожкам к двум входным векторам
- См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Binary op, Vector<Byte> v, VectorMask<Byte> m)
- Определено в:
-
lanewiseв классеVector<Byte> - Параметры:
-
op- операция для объединения значений элементов -
v- второй входной вектор -
m- маска, управляющая выбором элементов - Возвращает:
- результат применения операции по элементам к двум входным векторам
- См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Binary op, byte e)
this.lanewise(op, this.broadcast(e)). - Параметры:
-
op- операция для обработки значений элементов -
e- входной скаляр - Возвращает:
- результат применения операции по элементам к двум входным векторам
- Исключения:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Binary op, byte e, VectorMask<Byte> m)
this.lanewise(op, this.broadcast(e), m). - Параметры:
-
op- операция для обработки значений элементов -
e- входной скаляр -
m- маска, управляющая выбором элементов - Возвращает:
- результат применения операции по элементам к входному вектору и скаляру
- Исключения:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Binary op, long e)
this.lanewise(op, this.broadcast(e)). - Определено в:
-
lanewiseв классеVector<Byte> - Примечание API:
- При работе с подтипами векторов, такими как
ByteVector, обычно выбирается более типизированный метод более типизированный метод. Его можно явно выбрать с помощью приведения типов:v.lanewise(op,(byte)e). Два выражения дадут численно одинаковый результат. - Параметры:
-
op- операция для объединения значений элементов -
e- входной скаляр - Возвращает:
- результат применения операции по элементам к входному вектору и скаляру
- См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Binary op, long e, VectorMask<Byte> m)
this.lanewise(op, this.broadcast(e), m). - Определено в:
-
lanewiseв классеVector<Byte> - Примечание API:
- При работе с подтипами векторов, такими как
ByteVector, обычно выбирается более типизированный метод более типизированный метод. Его можно явно выбрать с помощью приведения типов:v.lanewise(op,(byte)e,m). Два выражения дадут численно одинаковый результат. - Параметры:
-
op- операция для объединения значений элементов -
e- входной скаляр -
m- маска, управляющая выбором элементов - Возвращает:
- результат применения операции по элементам к входному вектору и скаляру
- См. также:
lanewise
public abstract ByteVector lanewise(VectorOperators.Ternary op, Vector<Byte> v1, Vector<Byte> v2)
- Определено в:
-
lanewiseв классеVector<Byte> - Параметры:
-
op- операция для объединения значений элементов -
v1- второй входной вектор -
v2- третий входной вектор - Возвращает:
- результат применения операции по элементам к трём входным векторам
- См. также:
-
lanewise(VectorOperators.Ternary,byte,byte,VectorMask)lanewise(VectorOperators.Ternary,Vector,byte,VectorMask)lanewise(VectorOperators.Ternary,byte,Vector,VectorMask)lanewise(VectorOperators.Ternary,byte,byte)lanewise(VectorOperators.Ternary,Vector,byte)lanewise(VectorOperators.Ternary,byte,Vector)
lanewise
public final ByteVector lanewise(VectorOperators.Ternary op, Vector<Byte> v1, Vector<Byte> v2, VectorMask<Byte> m)
- Определено в:
-
lanewiseв классеVector<Byte> - Параметры:
-
op- операция для объединения значений элементов -
v1- второй входной вектор -
v2- третий входной вектор -
m- маска, управляющая выбором элементов - Возвращает:
- результат применения операции по элементам к трём входным векторам
- См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Ternary op, byte e1, byte e2)
this.lanewise(op, this.broadcast(e1), this.broadcast(e2)). - Параметры:
-
op- операция для объединения значений элементов -
e1- первый входной скаляр -
e2- второй входной скаляр - Возвращает:
- результат применения операции по элементам к входному вектору и скалярам
- Исключения:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Ternary op, byte e1, byte e2, VectorMask<Byte> m)
this.lanewise(op, this.broadcast(e1), this.broadcast(e2), m).- Параметры:
-
op- операция, используемая для объединения значений элементов -
e1- первый входной скаляр -
e2- второй входной скаляр -
m- маска, управляющая выбором элементов - Возвращает:
- результат применения операции к вектору и скалярам
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Ternary op, Vector<Byte> v1, byte e2)
this.lanewise(op, v1, this.broadcast(e2)).- Параметры:
-
op- операция, используемая для объединения значений элементов -
v1- другой входной вектор -
e2- входной скаляр - Возвращает:
- результат применения операции к вектору и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Ternary op, Vector<Byte> v1, byte e2, VectorMask<Byte> m)
this.lanewise(op, v1, this.broadcast(e2), m).- Параметры:
-
op- операция, используемая для объединения значений элементов -
v1- другой входной вектор -
e2- входной скаляр -
m- маска, управляющая выбором элементов - Возвращает:
- результат применения операции к вектору и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Ternary op, byte e1, Vector<Byte> v2)
this.lanewise(op, this.broadcast(e1), v2).- Параметры:
-
op- операция, используемая для объединения значений элементов -
e1- входной скаляр -
v2- другой входной вектор - Возвращает:
- результат применения операции к вектору и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
lanewise
public final ByteVector lanewise(VectorOperators.Ternary op, byte e1, Vector<Byte> v2, VectorMask<Byte> m)
this.lanewise(op, this.broadcast(e1), v2, m).- Параметры:
-
op- операция, используемая для объединения значений элементов -
e1- входной скаляр -
v2- другой входной вектор -
m- маска, управляющая выбором элементов - Возвращает:
- результат применения операции к вектору и скаляру
- Исключение:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
add
public final ByteVector add(Vector<Byte> v)
+) к каждой паре соответствующих значений элементов. Этот метод также эквивалентен выражению lanewise(ADD, v). В качестве полной операции с именем, этот метод представлен перегрузками с масками и без них, а (в подклассах) также представлен перегрузками со скалярным вещанием (с масками и без них).
- Определено в:
-
addв классеVector<Byte> - Параметры:
-
v- второй входной вектор - Возвращает:
- результат добавления этого вектора к второму входному вектору
- См. также:
add
public final ByteVector add(byte e)
+) к каждому элементу. Этот метод также эквивалентен выражению lanewise(ADD, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результат добавления каждого элемента вектора к скаляру
- См. также:
add
public final ByteVector add(Vector<Byte> v, VectorMask<Byte> m)
+) к каждой паре соответствующих значений элементов. Для любого элемента, не установленного в маске, примитивная операция подавляется, и этот вектор сохраняет исходное значение, хранящееся в этом элементе. Этот метод также эквивалентен выражению lanewise(ADD, v, m). В качестве полной операции с именем, этот метод представлен перегрузками с масками и без них, а (в подклассах) также представлен перегрузками со скалярным вещанием (с масками и без них).
- Определено в:
-
addв классеVector<Byte> - Параметры:
-
v- второй входной вектор -
m- маска, управляющая выбором элементов - Возвращает:
- результат сложения данного вектора
- См. также:
add
public final ByteVector add(byte e, VectorMask<Byte> m)
+) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(ADD, s, m).- Parameters:
-
e- входной скаляр -
m- маска, контролирующая выбор дорожки - Returns:
- результат сложения каждой дорожки этого вектора со скаляром
- See Also:
sub
public final ByteVector sub(Vector<Byte> v)
-) к каждой паре соответствующих значений дорожки. Этот метод также эквивалентен выражению lanewise(SUB, v). Как полнофункциональная именованная операция, этот метод имеет перегрузки с маской и без маски, а также (в подклассах) имеет перегрузки скалярного-расширенного (с маской и без маски).
- Specified by:
-
subin classVector<Byte> - Parameters:
-
v- второй входной вектор - Returns:
- результат вычитания второго входного вектора из этого вектора
- See Also:
sub
public final ByteVector sub(byte e)
-) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(SUB, e).- Parameters:
-
e- входной скаляр - Returns:
- результат вычитания скаляра из каждой дорожки этого вектора
- See Also:
sub
public final ByteVector sub(Vector<Byte> v, VectorMask<Byte> m)
-) к каждой паре соответствующих значений дорожки. Для любой дорожки, не установленной в маске, примитивная операция подавляется, и этот вектор сохраняет исходное значение, хранящееся на этой дорожке. Этот метод также эквивалентен выражению lanewise(SUB, v, m). Как полнофункциональная именованная операция, этот метод имеет перегрузки с маской и без маски, а также (в подклассах) имеет перегрузки скалярного-расширенного (с маской и без маски).
- Specified by:
-
subin classVector<Byte> - Parameters:
-
v- второй входной вектор -
m- маска, контролирующая выбор дорожки - Returns:
- результат вычитания второго входного вектора из этого вектора
- See Also:
sub
public final ByteVector sub(byte e, VectorMask<Byte> m)
-) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(SUB, s, m).- Parameters:
-
e- входной скаляр -
m- маска, контролирующая выбор дорожки - Returns:
- результат вычитания скаляра из каждой дорожки этого вектора
- See Also:
mul
public final ByteVector mul(Vector<Byte> v)
*) к каждой паре соответствующих значений дорожки. Этот метод также эквивалентен выражению lanewise(MUL, v). Как полнофункциональная именованная операция, этот метод имеет перегрузки с маской и без маски, а также (в подклассах) имеет перегрузки скалярного-расширенного (с маской и без маски).
- Specified by:
-
mulin classVector<Byte> - Parameters:
-
v- второй входной вектор - Returns:
- результат умножения этого вектора на второй входной вектор
- See Also:
mul
public final ByteVector mul(byte e)
*) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(MUL, e).- Parameters:
-
e- входной скаляр - Returns:
- результат умножения этого вектора на данный скаляр
- See Also:
mul
public final ByteVector mul(Vector<Byte> v, VectorMask<Byte> m)
*) к каждой паре соответствующих значений дорожки. Для любой дорожки, не установленной в маске, примитивная операция подавляется, и этот вектор сохраняет исходное значение, хранящееся на этой дорожке. Этот метод также эквивалентен выражению lanewise(MUL, v, m). Как полнофункциональная именованная операция, этот метод имеет перегрузки с маской и без маски, а также (в подклассах) имеет перегрузки скалярного-расширенного (с маской и без маски).
- Specified by:
-
mulin classVector<Byte> - Parameters:
-
v- второй входной вектор -
m- маска, контролирующая выбор дорожки - Returns:
- результат умножения этого вектора на данный вектор
- See Also:
mul
public final ByteVector mul(byte e, VectorMask<Byte> m)
*) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(MUL, s, m).- Параметры:
-
e- входной скаляр -
m- маска, контролирующая выбор дорожек - Возвращает:
- результат умножения каждой дорожки этого вектора на скаляр
- См. также:
div
public final ByteVector div(Vector<Byte> v)
/) к каждой паре соответствующих значений дорожек. Этот метод также эквивалентен выражению lanewise(DIV, v). В качестве полнофункциональной именованной операции этот метод доступен с маской и без нее, и (в подклассах) также доступен со скалярным транслятором (с маской и без нее).
- Определено в:
-
divв классеVector<Byte> - Примечание API:
- Если есть делитель на ноль, будет выброшено исключение
ArithmeticException. - Параметры:
-
v- второй входной вектор - Возвращает:
- результат деления этого вектора на второй входной вектор
- См. также:
div
public final ByteVector div(byte e)
/) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(DIV, e).- Примечание API:
- Если есть делитель на ноль, будет выброшено исключение
ArithmeticException. - Параметры:
-
e- входной скаляр - Возвращает:
- результат деления каждой дорожки этого вектора на скаляр
- См. также:
div
public final ByteVector div(Vector<Byte> v, VectorMask<Byte> m)
/) к каждой паре соответствующих значений дорожек. Для любой дорожки, не установленной в маске, примитивная операция подавляется, и этот вектор сохраняет исходное значение, хранящееся в этой дорожке. Этот метод также эквивалентен выражению lanewise(DIV, v, m). В качестве полнофункциональной именованной операции этот метод доступен с маской и без нее, и (в подклассах) также доступен со скалярным транслятором (с маской и без нее).
- Определено в:
-
divв классеVector<Byte> - Примечание API:
- Если есть делитель на ноль, будет выброшено исключение
ArithmeticException. - Параметры:
-
v- второй входной вектор -
m- маска, контролирующая выбор дорожек - Возвращает:
- результат деления этого вектора на второй входной вектор
- См. также:
div
public final ByteVector div(byte e, VectorMask<Byte> m)
/) к каждой дорожке. Этот метод также эквивалентен выражению lanewise(DIV, s, m).- Примечание API:
- Если есть делитель на ноль, будет выброшено исключение
ArithmeticException. - Параметры:
-
e- входной скаляр -
m- маска, контролирующая выбор дорожек - Возвращает:
- результат деления каждой дорожки этого вектора на скаляр
- См. также:
min
public final ByteVector min(Vector<Byte> v)
Math.min() к каждой паре соответствующих значений дорожек. Этот метод также эквивалентен выражению lanewise(MIN, v). - Определено в:
-
minв классеVector<Byte> - Параметры:
-
v- второй входной вектор - Возвращает:
- минимальное значение по дорожкам этого вектора и второго входного вектора
- См. также:
min
public final ByteVector min(byte e)
Math.min() к каждой паре соответствующих значений дорожек. Этот метод также эквивалентен выражению lanewise(MIN, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результат умножения этого вектора на заданный скаляр
- См. также:
max
public final ByteVector max(Vector<Byte> v)
Math.max() к каждой паре соответствующих значений байтов. Этот метод также эквивалентен выражению lanewise(MAX, v). Это не полная именованная операция, как add(). Маскированная версия этой операции не доступна напрямую, но может быть получена через маскированную версию lanewise. Подклассы определяют дополнительную перегрузку этого метода для скалярного расширения.
- Specified by:
-
maxin classVector<Byte> - Parameters:
-
v- второй входной вектор - Returns:
- максимальное значение на уровне байтов этого вектора и второго входного вектора
- See Also:
max
public final ByteVector max(byte e)
Math.max() к каждой паре соответствующих значений байтов. Этот метод также эквивалентен выражению lanewise(MAX, e).- Parameters:
-
e- входной скаляр - Returns:
- результат умножения этого вектора на данный скаляр
- See Also:
and
public final ByteVector and(Vector<Byte> v)
&) этого вектора и второго входного вектора. Это бинарная операция на уровнях байтов, которая применяет примитивную побитовую операцию "и" (&) к каждой паре соответствующих значений байтов. Этот метод также эквивалентен выражению lanewise(AND, v). Это не полная именованная операция, как add. Маскированная версия этой операции не доступна напрямую, но может быть получена через маскированную версию lanewise.
- Parameters:
-
v- второй входной вектор - Returns:
- побитовое
&этого вектора и второго входного вектора - See Also:
and
public final ByteVector and(byte e)
&) этого вектора и скаляра. Это бинарная операция на уровнях байтов, которая применяет примитивную побитовую операцию "и" (&) к каждой паре соответствующих значений байтов. Этот метод также эквивалентен выражению lanewise(AND, e).- Parameters:
-
e- входной скаляр - Returns:
- побитовое
&этого вектора и скаляра - See Also:
or
public final ByteVector or(Vector<Byte> v)
|) этого вектора и второго входного вектора. Это бинарная операция на уровнях байтов, которая применяет примитивную побитовую операцию "или" (|) к каждой паре соответствующих значений байтов. Этот метод также эквивалентен выражению lanewise(AND, v). Это не полная именованная операция, как add. Маскированная версия этой операции не доступна напрямую, но может быть получена через маскированную версию lanewise.
- Parameters:
-
v- второй входной вектор - Returns:
- побитовое
|этого вектора и второго входного вектора - See Also:
or
public final ByteVector or(byte e)
|) этого вектора и скаляра. Это бинарная операция на уровнях байтов, которая применяет примитивную побитовую операцию "или" (|) к каждой паре соответствующих значений байтов. Этот метод также эквивалентен выражению lanewise(OR, e).- Parameters:
-
e- входной скаляр - Returns:
- побитовое
|этого вектора и скаляра - See Also:
neg
public final ByteVector neg()
-x) к каждому входному байту. Этот метод также эквивалентен выражению lanewise(NEG). - Specified by:
-
negin classVector<Byte> - Returns:
- отрицание этого вектора
- See Also:
abs
public final ByteVector abs()
Math.abs к каждому входному байту. Этот метод также эквивалентен выражению lanewise(ABS). - Specified by:
-
absin classVector<Byte> - Returns:
- абсолютное значение этого вектора
- See Also:
not
public final ByteVector not()
~) этого вектора. Это покомпонентная двоичная операция, которая применяет примитивную побитовую операцию "not" (~) к каждому значению компоненты. Этот метод также эквивалентен выражению lanewise(NOT). Это не полная именованная операция, как add. Маскированная версия этой операции не доступна напрямую, но может быть получена с помощью маскированной версии lanewise.
- Возвращает:
- побитовое дополнение
~этого вектора - См. также:
eq
public final VectorMask<Byte> eq(Vector<Byte> v)
==) к каждой паре соответствующих значений компонентов. Результат такой же, как compare(VectorOperators.EQ, v). - Определено в:
-
eqв классеVector<Byte> - Параметры:
-
v- второй входной вектор - Возвращает:
- маска результата проверки покомпонентного равенства этого вектора второму входному вектору
- См. также:
eq
public final VectorMask<Byte> eq(byte e)
==) к каждой компоненте. Результат такой же, как compare(VectorOperators.Comparison.EQ, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результирующая маска проверки, равен ли этот вектор
e - См. также:
lt
public final VectorMask<Byte> lt(Vector<Byte> v)
<) к каждой компоненте. Результат такой же, как compare(VectorOperators.LT, v). - Определено в:
-
ltв классеVector<Byte> - Параметры:
-
v- второй входной вектор - Возвращает:
- маска результата проверки покомпонентного сравнения, меньше ли этот вектор второго входного вектора
- См. также:
lt
public final VectorMask<Byte> lt(byte e)
<) к каждой компоненте. Результат такой же, как compare(VectorOperators.LT, e).- Параметры:
-
e- входной скаляр - Возвращает:
- результирующая маска проверки, меньше ли этот вектор входного скаляра
- См. также:
test
public abstract VectorMask<Byte> test(VectorOperators.Test op)
- Определено в:
-
testв классеVector<Byte> - Параметры:
-
op- операция, используемая для проверки значений компонентов - Возвращает:
- результирующая маска проверки компонентов этого вектора в соответствии с выбранным оператором проверки
- См. также:
test
public final VectorMask<Byte> test(VectorOperators.Test op, VectorMask<Byte> m)
test(op).and(m). - Определено в:
-
testв классеVector<Byte> - Параметры:
-
op- операция, используемая для проверки значений компонентов -
m- маска, управляющая выбором компонентов - Возвращает:
- результирующая маска проверки компонентов этого вектора в соответствии с выбранным оператором проверки, и только в тех компонентах, которые выбраны маской
- См. также:
compare
public abstract VectorMask<Byte> compare(VectorOperators.Comparison op, Vector<Byte> v)
- Определено в:
-
compareв классеVector<Byte> - Параметры:
-
op- операция, используемая для сравнения значений компонентов -
v- второй входной вектор - Возвращает:
- результирующая маска проверки покомпонентного сравнения этого вектора с входом, в соответствии с выбранным оператором сравнения
- См. также:
compare
public final VectorMask<Byte> compare(VectorOperators.Comparison op, Vector<Byte> v, VectorMask<Byte> m)
compare(op,v).and(m). - Определено в:
-
compareв классеVector<Byte> - Параметры:
-
op- операция, используемая для сравнения значений компонентов -
v- второй входной вектор -
m- маска, управляющая выбором компонентов - Возвращает:
- результирующая маска проверки покомпонентного сравнения этого вектора с входом, в соответствии с выбранным оператором сравнения, и только в тех компонентах, которые выбраны маской
- См. также:
compare
public abstract VectorMask<Byte> compare(VectorOperators.Comparison op, byte e)
Результат такой же, как compare(op, broadcast(species(), e)). То есть, скаляр может быть рассмотрен как транслированный в вектор той же спецификации, а затем сравнен с исходным вектором с использованием выбранной операции сравнения.
- Параметры:
-
op- операция, используемая для сравнения значений компонентов -
e- входной скаляр - Возвращает:
- результирующая маска проверки покомпонентного сравнения этого вектора с входом, в соответствии с выбранным оператором сравнения
- См. также:
compare
public final VectorMask<Byte> compare(VectorOperators.Comparison op, byte e, VectorMask<Byte> m)
compare(op,s).and(m). - Параметры:
-
op- операция, используемая для сравнения значений элементов -
e- скалярное значение ввода -
m- маска, управляющая выбором элементов - Возвращает:
- маску результата проверки по элементам, если этот вектор сравнивается с вводом в соответствии с выбранным оператором сравнения, и только в элементах, выбранных маской
- См. также:
compare
public abstract VectorMask<Byte> compare(VectorOperators.Comparison op, long e)
Результат такой же, как this.compare(op, this.broadcast(e)). То есть, скаляр можно рассматривать как транслированный в вектор той же структуры, а затем сравнивать с исходным вектором, используя выбранную операцию сравнения.
- Определено в:
-
compareв классеVector<Byte> - Параметры:
-
op- операция, используемая для сравнения значений элементов -
e- скалярное значение ввода - Возвращает:
- маску результата проверки по элементам, если этот вектор сравнивается с вводом в соответствии с выбранным оператором сравнения
- См. также:
compare
public final VectorMask<Byte> compare(VectorOperators.Comparison op, long e, VectorMask<Byte> m)
compare(op,e).and(m). - Определено в:
-
compareв классеVector<Byte> - Параметры:
-
op- операция, используемая для сравнения значений элементов -
e- скалярное значение ввода -
m- маска, управляющая выбором элементов - Возвращает:
- маску результата проверки по элементам, если этот вектор сравнивается с вводом в соответствии с выбранным оператором сравнения, и только в элементах, выбранных маской
- См. также:
blend
public abstract ByteVector blend(Vector<Byte> v, VectorMask<Byte> 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);
- Определено в:
-
blendв классеVector<Byte> - Параметры:
-
v- второй входной вектор, содержащий значения замены элементов -
m- маска, управляющая выбором элементов из второго входного вектора - Возвращает:
- результат смешения элементов этого вектора с элементами второго входного вектора
addIndex
public abstract ByteVector 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);
- Определено в:
-
addIndexв классеVector<Byte> - Параметры:
-
scale- число, на которое умножается каждый индекс элементаN, обычно1 - Возвращает:
- результат инкрементирования каждого элемента по соответствующему индексу элемента
N, масштабированному наscale
blend
public final ByteVector blend(byte e, VectorMask<Byte> m)
blend(broadcast(e),m).- Параметры:
-
e- скалярное значение ввода, содержащее значение замены элементов -
m- маска, управляющая выбором элементов скаляра - Возвращает:
- результат смешения элементов этого вектора со скалярным значением
blend
public final ByteVector blend(long e, VectorMask<Byte> m)
blend(broadcast(e),m).- Определено в:
-
blendв классеVector<Byte> - Параметры:
-
e- скалярное значение ввода, содержащее значение замены элементов -
m- маска, управляющая выбором элементов скаляра - Возвращает:
- результат смешения элементов этого вектора со скалярным значением
slice
public abstract ByteVector slice(int origin, Vector<Byte> 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 ByteVector slice(int origin, Vector<Byte> w, VectorMask<Byte> m)
origin ленты в текущем векторе и продолжая (при необходимости) в непосредственно последующий вектор. Блок VLENGTH лент извлекается в собственный вектор и возвращается. Результирующий вектор будет равен нулю во всех лентах, не установленных в данной маске. Ленты, установленные в маске, будут содержать данные, скопированные с выбранных лент this или v1. Это межлентовое действие, которое сдвигает элементы лент вперёд, из текущего вектора и второго вектора. Оба вектора можно рассматривать как объединённый «фоновый» массив длиной 2*VLENGTH, из которого извлекается срез. Результат равен выражению broadcast(0).blend(slice(origin,v1),m).
- Определено в:
-
sliceв классеVector<Byte> - Параметры:
-
origin- первая входная лента для переноса в срез -
w- второй вектор, логически конкатенированный с первым, перед взятием среза (если опущен, по умолчанию равен нулю) -
m- маска, управляющая выбором лент в результирующий вектор - Возвращает:
- непрерывный срез
VLENGTHлент, взятых из этого вектора, начиная с указанного начала и продолжая (при необходимости) во второй вектор - См. также:
slice
public abstract ByteVector slice(int origin)
origin ленты в текущем векторе. Блок VLENGTH лент, возможно, дополненный нулевыми лентами, извлекается в собственный вектор и возвращается. Это вспомогательный метод, который вырезает из одного вектора на расширенном фоне нулевых лент. Он эквивалентен slice
(origin, broadcast(0)). Его также можно рассматривать как межленточный сдвиг с более поздних на более ранние ленты, при этом пустые ленты в конце вектора заполняются нулями. В этом представлении счётчик сдвига равен origin. - Параметры:
-
origin- первая входная лента для переноса в срез - Возвращает:
- последние
VLENGTH-originвходные ленты, размещённые, начиная с первой ленты вывода, дополненные нулями в конце - См. также:
unslice
public abstract ByteVector unslice(int origin, Vector<Byte> 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<Byte> - Параметры:
-
origin- первая выходная лента, которая получит срез -
w- фоновый вектор, который (в двух копиях) получит вставленный срез -
part- номер части результата (либо ноль, либо единица) - Возвращает:
- либо первую, либо вторую часть пары фоновых векторов
w, обновлённых путём вставки этого вектора в указанную точку начала - См. также:
unslice
public abstract ByteVector unslice(int origin, Vector<Byte> w, int part, VectorMask<Byte> m)
slice() операцию. Это межлентовое действие, которое переупорядочивает элементы лент текущего вектора вперёд и вставляет его ленты (при выборе маской) в логическую пару фоновых векторов. Как и в случае с немаскированной версией этого метода, будет возвращён только один из пары, как выбрано значением part . Для каждой ленты N , выбранной маской, значение ленты копируется в ленту origin+N первого фонового вектора, если она существует, иначе в ленту origin+N-VLENGTH второго фонового вектора (которая гарантированно существует). Фоновые ленты сохраняют свои исходные значения, если соответствующие входные ленты N не установлены в маске. Первый или второй фоновый вектор, обновлённый установленными лентами вставленного среза, возвращается. Число part нуля или единицы выбирает первый или второй обновлённый фоновый вектор.
- Определено в:
-
unsliceв классеVector<Byte> - Параметры:
-
origin- первая выходная лента, которая получит срез -
w- фоновый вектор, который (в двух копиях) получит вставленный срез, если они установлены вm -
part- номер части результата (либо ноль, либо единица) -
m- маска, управляющая выбором лент из текущего вектора - Возвращает:
- либо первую, либо вторую часть пары фоновых векторов
w, обновлённых путём вставки выбранных лент этого вектора в указанную точку начала - См. также:
unslice
public abstract ByteVector unslice(int origin)
unslice() методами, этот метод возвращает только первую из пары фоновых векторов. Это вспомогательный метод, который возвращает результат unslice
(origin, broadcast(0), 0). Его также можно рассматривать как межленточный сдвиг с более ранних на более поздние ленты, при этом пустые ленты в начале вектора заполняются нулями. В этом представлении счётчик сдвига равен origin. - Определено в:
-
unsliceв классеVector<Byte> - Параметры:
-
origin- первая выходная лента, которая получит срез - Возвращает:
- первые
VLENGTH-originвходные ленты, размещённые, начиная с данного начала, дополненные нулями в начале - См. также:
rearrange
public abstract ByteVector rearrange(VectorShuffle<Byte> m)
N переупорядочения и для каждого индекса ленты-источника I=s.laneSource(N) в переупорядочении, выходная лента N получает значение из входного вектора на ленте I. - Определено в:
-
rearrangeв классеVector<Byte> - Параметры:
-
m- переупорядочение, управляющее выбором индексов лент - Возвращает:
- переупорядочение элементов лент этого вектора
- См. также:
rearrange
public abstract ByteVector rearrange(VectorShuffle<Byte> s, VectorMask<Byte> m)
N смещения и для каждого индекса исходного элемента I=s.laneSource(N) в смещении выходной элемент N получает значение из входного вектора по индексу I, если маска установлена. В противном случае выходной элемент N устанавливается в ноль. Этот метод возвращает значение следующего псевдокода:
Vector<E> r = this.rearrange(s.wrapIndexes());
VectorMask<E> valid = s.laneIsValid();
if (m.andNot(valid).anyTrue()) throw ...;
return broadcast(0).blend(r, m);
- Определено в:
-
rearrangeв классеVector<Byte> - Параметры:
-
s- смещение, определяющее выбор индекса элемента -
m- маска, определяющая применение смещения - Возвращает:
- переупорядоченные элементы этого вектора
- См. также:
rearrange
public abstract ByteVector rearrange(VectorShuffle<Byte> s, Vector<Byte> 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());
- Определено в:
-
rearrangeв классеVector<Byte> - Параметры:
-
s- смещение, определяющее выбор элементов из обоих входных векторов -
v- второй входной вектор - Возвращает:
- переупорядоченные элементы элементов этого вектора и второго входного вектора
- См. также:
selectFrom
public abstract ByteVector selectFrom(Vector<Byte> v)
v. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам в текущем векторе. Это операция между элементами, которая переупорядочивает элементы аргументного вектора под управлением этого вектора. Для каждого элемента N этого вектора и для каждого значения элемента I=this.lane(N) в этом векторе выходной элемент N получает значение из аргументного вектора по индексу I. Таким образом, результат содержит только значения, хранящиеся в аргументном векторе v, но представленные в порядке, зависящем от значений индексов в this. Результат совпадает с выражением v.rearrange(this.toShuffle()). - Определено в:
-
selectFromв классеVector<Byte> - Параметры:
-
v- вектор, предоставляющий значения результата - Возвращает:
- переупорядоченные элементы элементов
v - См. также:
selectFrom
public abstract ByteVector selectFrom(Vector<Byte> s, VectorMask<Byte> m)
v. Таким образом, второй вектор служит таблицей, элементы которой выбираются по индексам в текущем векторе. Элементы, которые не установлены в маске, получают ноль вместо значения из таблицы. Это операция между элементами, которая переупорядочивает элементы аргументного вектора под управлением этого вектора и маски. Результат совпадает с выражением v.rearrange(this.toShuffle(), m). - Определено в:
-
selectFromв классеVector<Byte> - Параметры:
-
s- вектор, предоставляющий значения результата -
m- маска, управляющая выбором изv - Возвращает:
- переупорядоченные элементы элементов
v - См. также:
bitwiseBlend
public final ByteVector bitwiseBlend(Vector<Byte> bits, Vector<Byte> mask)
(a&~c)|(b&c) для каждого элемента. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для объединения в текущий вектор -
mask- побитовая маска для включения объединения входных битов - Возвращает:
- побитовое объединение заданных битов в текущий вектор под управлением побитовой маски
- См. также:
bitwiseBlend
public final ByteVector bitwiseBlend(byte bits, byte mask)
(a&~c)|(b&c) для каждого элемента. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для объединения в текущий вектор -
mask- побитовая маска для включения объединения входных битов - Возвращает:
- побитовое объединение заданных битов в текущий вектор под управлением побитовой маски
- См. также:
bitwiseBlend
public final ByteVector bitwiseBlend(byte bits, Vector<Byte> mask)
(a&~c)|(b&c) для каждого элемента. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для объединения в текущий вектор -
mask- побитовая маска для включения объединения входных битов - Возвращает:
- побитовое объединение заданных битов в текущий вектор под управлением побитовой маски
- См. также:
побитовоеСмешение
public final ByteVector bitwiseBlend(Vector<Byte> bits, byte mask)
(a&~c)|(b&c) для каждого элемента. Этот метод также эквивалентен выражению lanewise(BITWISE_BLEND, bits, mask).- Параметры:
-
bits- входные биты для смешения в текущий вектор -
mask- битовая маска для включения смешения входных битов - Возвращает:
- побитовое смешение заданных битов в текущий вектор под управлением битовой маски
- См. также:
reduceLanes
public abstract byte reduceLanes(VectorOperators.Associative op)
Некоторые операции сокращения не поддерживают произвольное переупорядочение операндов, но включены из-за их полезности.
- В случае
FIRST_NONZERO, сокращение возвращает значение из элемента с наименьшим номером, отличным от нуля. - Все остальные операции сокращения полностью коммутативны и ассоциативны. Реализация может выбрать любой порядок обработки, но всегда будет возвращать то же самое значение.
- Параметры:
-
op- операция, используемая для объединения значений элементов - Возвращает:
- значение накопленного результата
- Исключения:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
reduceLanes
public abstract byte reduceLanes(VectorOperators.Associative op, VectorMask<Byte> m)
Если элементы не выбраны, возвращается значение, специфичное для операции.
- Если операция —
ADD,XOR,OR, илиFIRST_NONZERO, то значение по умолчанию — ноль. - Если операция —
MUL, то значение по умолчанию — единица. - Если операция —
AND, то значение по умолчанию — минус один (все биты установлены). - Если операция —
MAX, то значение по умолчанию —Byte.MIN_VALUE. - Если операция —
MIN, то значение по умолчанию —Byte.MAX_VALUE.
Некоторые операции сокращения не поддерживают произвольное переупорядочение операндов, но включены из-за их полезности.
- В случае
FIRST_NONZERO, сокращение возвращает значение из элемента с наименьшим номером, отличным от нуля. - Все остальные операции сокращения полностью коммутативны и ассоциативны. Реализация может выбрать любой порядок обработки, но всегда будет возвращать то же самое значение.
- Параметры:
-
op- операция, используемая для объединения значений элементов -
m- маска, контролирующая выбор элементов - Возвращает:
- результат сокращения, накопленный из выбранных значений элементов
- Исключения:
-
UnsupportedOperationException- если этот вектор не поддерживает запрошенную операцию - См. также:
элемент
public abstract byte lane(int i)
i
- Параметры:
-
i- индекс элемента - Возвращает:
- элемент вектора по индексу
i - Исключения:
-
IllegalArgumentException- если индекс выходит за пределы допустимых значений (< 0 || >= length())
сЭлементом
public abstract ByteVector withLane(int i, byte e)
i значением e. Это межэлементная операция, которая ведет себя так, как если бы она возвращала результат смешения текущего вектора с входным вектором, являющимся результатом широковещательной передачи e и маской, имеющей только один установленный элемент по индексу i. - Параметры:
-
i- индекс элемента, который нужно заменить -
e- значение, которое нужно установить - Возвращает:
- результат замены элемента вектора по индексу
iзначениемe. - Исключения:
-
IllegalArgumentException- если индекс выходит за пределы допустимых значений (< 0 || >= length())
toArray
public final byte[] toArray()
byte[], содержащий все значения элементов. Длина массива совпадает с длиной вектора. Элементы массива хранятся в порядке элементов вектора. Этот метод ведет себя так, как если бы он записывал этот вектор в выделенный массив (используя intoArray) и возвращал массив следующим образом:
byte[] a = new byte[this.length()];
this.intoArray(a, 0);
return a;
- Определено в:
-
toArrayв классеVector<Byte> - Возвращает:
- массив, содержащий значения элементов этого вектора
- См. также:
toIntArray
public final int[] toIntArray()
int[], содержащий все значения элементов, преобразованные к типу int. Длина массива совпадает с длиной вектора. Элементы преобразуются, как при приведении типов, и хранятся в порядке элементов. Эта операция может завершиться ошибкой, если тип элемента вектора —
float или double, когда элементы содержат дробные или недопустимые значения. Если какое-либо значение элемента вектора не может быть представлено как int, генерируется исключение. - Определено в:
-
toIntArrayв классеVector<Byte> - Примечание для реализации:
- При использовании этого метода для векторов типа
ByteVector, потери точности или диапазона не будет, и исключениеUnsupportedOperationExceptionне сгенерируется. - Возвращает:
- массив типа
int[]содержащий значения элементов этого вектора - См. также:
toLongArray
public final long[] toLongArray()
long[], содержащий все значения элементов, преобразованные к типу long. Длина массива совпадает с длиной вектора. Элементы преобразуются, как при приведении типов, и хранятся в порядке элементов. Эта операция может завершиться ошибкой, если тип элемента вектора —
float или double, когда элементы содержат дробные или недопустимые значения. Если какое-либо значение элемента вектора не может быть представлено как long, генерируется исключение. - Определено в:
-
toLongArrayв классеVector<Byte> - Примечание для реализации:
- При использовании этого метода для векторов типа
ByteVector, потери точности или диапазона не будет, и исключениеUnsupportedOperationExceptionне сгенерируется. - Возвращает:
- массив типа
long[]содержащий значения элементов этого вектора - См. также:
toDoubleArray
public final double[] toDoubleArray()
double[] содержащий все значения полос, преобразованные к типу double. Длина массива совпадает с длиной вектора. Элементы массива преобразуются как при приведении типов и хранятся в порядке полос. Эта операция может привести к потере точности, если тип элемента вектора — long. - Определено в:
-
toDoubleArrayв классеVector<Byte> - Замечание по реализации:
- При использовании этого метода с векторами типа
ByteVector, потери точности не произойдёт. - Возвращает:
- массив
double[]содержащий значения полос этого вектора, возможно, округлённые до представимых значенийdouble - См. также:
fromByteArray
public static ByteVector fromByteArray(VectorSpecies<Byte> species, byte[] a, int offset, ByteOrder bo)
Этот метод работает так, как будто он возвращает результат вызова fromByteBuffer() следующим образом:
var bb = ByteBuffer.wrap(a);
var m = species.maskAll(true);
return fromByteBuffer(species, bb, offset, bo, m);
- Параметры:
-
species- вид желаемого вектора -
a- массив байтов -
offset- смещение в массиве -
bo- предполагаемый порядок байтов - Возвращает:
- вектор, загруженный из массива байтов
- Выбрасывает:
-
IndexOutOfBoundsException- еслиoffset+N*ESIZE < 0илиoffset+(N+1)*ESIZE > a.lengthдля любой полосыNв векторе
fromByteArray
public static ByteVector fromByteArray(VectorSpecies<Byte> species, byte[] a, int offset, ByteOrder bo, VectorMask<Byte> m)
byte (ноль). Байты объединяются в примитивные элементы полос в соответствии с указанным порядком байтов. Вектор упорядочивается по полосам согласно порядку памяти. Этот метод работает так, как будто он возвращает результат вызова fromByteBuffer() следующим образом:
var bb = ByteBuffer.wrap(a);
return fromByteBuffer(species, bb, offset, bo, m);
- Параметры:
-
species- вид желаемого вектора -
a- массив байтов -
offset- смещение в массиве -
bo- предполагаемый порядок байтов -
m- маска, управляющая выбором полос - Возвращает:
- вектор, загруженный из массива байтов
- Выбрасывает:
-
IndexOutOfBoundsException- еслиoffset+N*ESIZE < 0илиoffset+(N+1)*ESIZE > a.lengthдля любой полосыNв векторе, где маска установлена
fromArray
public static ByteVector fromArray(VectorSpecies<Byte> species, byte[] a, int offset)
byte[], начиная со смещения. Для каждой полосы вектора, где N — индекс полосы вектора, элемент массива с индексом offset + N помещается в результирующий вектор с индексом полосы N. - Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве - Возвращает:
- вектор, загруженный из массива
- Выбрасывает:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой полосыNв векторе
fromArray
public static ByteVector fromArray(VectorSpecies<Byte> species, byte[] a, int offset, VectorMask<Byte> m)
byte[], начиная со смещения и используя маску. Полосы, где маска сброшена, заполняются значением по умолчанию для byte (ноль). Для каждой полосы вектора, где N — индекс полосы вектора, если полоса маски с индексом N установлена, то элемент массива с индексом offset + N помещается в результирующий вектор с индексом полосы N, в противном случае значение по умолчанию помещается в результирующий вектор с индексом полосы N. - Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве -
m- маска, управляющая выбором полос - Возвращает:
- вектор, загруженный из массива
- Выбрасывает:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой полосыNв векторе, где маска установлена
fromArray
public static ByteVector fromArray(VectorSpecies<Byte> species, byte[] a, int offset, int[] indexMap, int mapOffset)
byte[], используя индексы, полученные путём добавления фиксированного 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 ByteVector fromArray(VectorSpecies<Byte> species, byte[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Byte> m)
byte[], под управлением маски, и используя индексы, полученные путём добавления фиксированного 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в векторе, где маска установлена - См. также:
fromBooleanArray
public static ByteVector fromBooleanArray(VectorSpecies<Byte> species, boolean[] a, int offset)
boolean[], начиная со смещения. Для каждой полосы вектора, где N — индекс полосы вектора, элемент массива с индексом offset + N сначала преобразуется в значение byte и затем помещается в результирующий вектор с индексом полосы N. Значение boolean преобразуется в значение byte путём применения выражения (byte) (b ? 1 : 0), где b — значение boolean.
- Параметры:
-
species- вид желаемого вектора -
a- массив -
offset- смещение в массиве - Возвращает:
- вектор, загруженный из массива
- Выбрасывает:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой полосыNв векторе
fromBooleanArray
public static ByteVector fromBooleanArray(VectorSpecies<Byte> species, boolean[] a, int offset, VectorMask<Byte> m)
boolean[], начиная с смещения и используя маску. Ячейки, где маска не установлена, заполняются значением по умолчанию для byte (ноль). Для каждой ячейки вектора, где N — индекс ячейки вектора, если ячейка маски по индексу N установлена, то элемент массива по индексу offset + N сначала преобразуется в значение byte и затем помещается в результирующий вектор по индексу ячейки N, в противном случае значение элемента по умолчанию помещается в результирующий вектор по индексу ячейки N. Значение boolean преобразуется в значение byte с помощью выражения (byte) (b ? 1 : 0), где b — значение boolean.
- Parameters:
-
species- вид требуемого вектора -
a- массив -
offset- смещение в массиве -
m- маска, управляющая выбором ячеек - Returns:
- вектор, загруженный из массива
- Throws:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой ячейкиNв векторе, где маска установлена
fromBooleanArray
public static ByteVector fromBooleanArray(VectorSpecies<Byte> species, boolean[] a, int offset, int[] indexMap, int mapOffset)
boolean[], используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность VLENGTH элементов во втором массиве int с началом в заданном mapOffset. Для каждой ячейки вектора, где N — индекс ячейки вектора, ячейка загружается из выражения (byte) (a[f(N)] ? 1 : 0), где f(N) — выражение для отображения индекса offset + indexMap[mapOffset + N]].
- Parameters:
-
species- вид требуемого вектора -
a- массив -
offset- смещение в массиве, может быть отрицательным, если относительные индексы в карте индексов компенсируют для получения значения в пределах границ массива -
indexMap- карта индексов -
mapOffset- смещение в карте индексов - Returns:
- вектор, загруженный из индексированных элементов массива
- Throws:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вa, для любой ячейкиNв векторе - See Also:
fromBooleanArray
public static ByteVector fromBooleanArray(VectorSpecies<Byte> species, boolean[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Byte> m)
boolean[], под управлением маски и используя индексы, полученные путем добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность VLENGTH элементов во втором массиве int с началом в заданном mapOffset. Для каждой ячейки вектора, где N — индекс ячейки вектора, если ячейка установлена в маске, ячейка загружается из выражения (byte) (a[f(N)] ? 1 : 0), где f(N) — выражение для отображения индекса offset + indexMap[mapOffset + N]]. Ячейки, не установленные в результирующем векторе, устанавливаются в ноль.
- Parameters:
-
species- вид требуемого вектора -
a- массив -
offset- смещение в массиве, может быть отрицательным, если относительные индексы в карте индексов компенсируют для получения значения в пределах границ массива -
indexMap- карта индексов -
mapOffset- смещение в карте индексов -
m- маска, управляющая выбором ячеек - Returns:
- вектор, загруженный из индексированных элементов массива
- Throws:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вa, для любой ячейкиNв векторе, где маска установлена - See Also:
fromByteBuffer
public static ByteVector fromByteBuffer(VectorSpecies<Byte> species, ByteBuffer bb, int offset, ByteOrder bo)
Этот метод ведет себя так, как будто он возвращает результат вызова fromByteBuffer() следующим образом:
var m = species.maskAll(true);
return fromByteBuffer(species, bb, offset, bo, m);
- Parameters:
-
species- вид требуемого вектора -
bb- байтовый буфер -
offset- смещение в байтовом буфере -
bo- предполагаемый порядок байтов - Returns:
- вектор, загруженный из байтового буфера
- Throws:
-
IndexOutOfBoundsException- еслиoffset+N*1 < 0илиoffset+N*1 >= bb.limit()для любой ячейкиNв векторе
fromByteBuffer
public static ByteVector fromByteBuffer(VectorSpecies<Byte> species, ByteBuffer bb, int offset, ByteOrder bo, VectorMask<Byte> m)
byte (ноль). Байты собираются в примитивные элементы ячеек в соответствии с указанным порядком байтов. Вектор упорядочивается в ячейки в соответствии с порядком памяти. Следующий псевдокод иллюстрирует поведение:
ByteBuffer eb = bb.duplicate()
.position(offset);
byte[] ar = new byte[species.length()];
for (int n = 0; n < ar.length; n++) {
if (m.laneIsSet(n)) {
ar[n] = eb.get(n);
}
}
ByteVector r = ByteVector.fromArray(species, ar, 0);
- Implementation Note:
- Аргумент порядка байтов игнорируется.
- Parameters:
-
species- вид требуемого вектора -
bb- байтовый буфер -
offset- смещение в байтовом буфере -
bo- предполагаемый порядок байтов -
m- маска, управляющая выбором ячеек - Returns:
- вектор, загруженный из байтового буфера
- Throws:
-
IndexOutOfBoundsException- еслиoffset+N*1 < 0илиoffset+N*1 >= bb.limit()для любой ячейкиNв векторе, где маска установлена
intoArray
public final void intoArray(byte[] a, int offset)
byte[], начиная со смещения. Для каждой ячейки вектора, где N — индекс ячейки вектора, элемент ячейки по индексу N сохраняется в элемент массива a[offset+N].
- Parameters:
-
a- массив, типаbyte[] -
offset- смещение в массиве - Throws:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой ячейкиNв векторе
intoArray
public final void intoArray(byte[] a, int offset, VectorMask<Byte> m)
byte[], начиная со смещения и используя маску. Для каждой ячейки вектора, где N — индекс ячейки вектора, элемент ячейки по индексу N сохраняется в элемент массива a[offset+N]. Если ячейка маски по индексу N не установлена, соответствующий элемент массива a[offset+N] остается без изменений.
Проверка диапазона массива выполняется для ячеек, где маска установлена. Ячейки, где маска не установлена, не сохраняются и не должны соответствовать законным элементам a. То есть, не установленные ячейки могут соответствовать индексам массива меньше нуля или за пределами массива.
- Parameters:
-
a- массив, типаbyte[] -
offset- смещение в массиве -
m- маска, управляющая сохранением ячеек - Throws:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любой ячейкиNв векторе, где маска установлена
intoArray
public final void intoArray(byte[] a, int offset, int[] indexMap, int mapOffset)
byte[] с использованием индексов, полученных путём добавления фиксированного 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(byte[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Byte> m)
byte[], под управлением маски, и используя индексы, полученные путем добавления фиксированного 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в векторе, где маска установлена - См. также:
intoBooleanArray
public final void intoBooleanArray(boolean[] a, int offset)
boolean[], начиная со смещения. Для каждого канала вектора, где N — это индекс канала вектора, элемент канала с индексом N сначала преобразуется в значение boolean и затем сохраняется в элемент массива a[offset+N].
Значение byte преобразуется в значение boolean путём применения выражения (b & 1) != 0, где b — это значение байта.
- Параметры:
-
a- массив -
offset- смещение в массиве - Исключения:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого каналаNв векторе
intoBooleanArray
public final void intoBooleanArray(boolean[] a, int offset, VectorMask<Byte> m)
boolean[], начиная со смещения и используя маску. Для каждого канала вектора, где N — это индекс канала вектора, элемент канала с индексом N сначала преобразуется в значение boolean и затем сохраняется в элемент массива a[offset+N]. Если канал маски в N не установлен, соответствующий элемент массива a[offset+N] остается без изменений.
Значение byte преобразуется в значение boolean путём применения выражения (b & 1) != 0, где b — это значение байта.
Проверка диапазона массива выполняется для каналов, где маска установлена. Каналы, где маска не установлена, не сохраняются и не должны соответствовать законным элементам a. То есть, не установленные каналы могут соответствовать индексам массива меньше нуля или за пределами массива.
- Параметры:
-
a- массив -
offset- смещение в массиве -
m- маска, управляющая сохранением каналов - Исключения:
-
IndexOutOfBoundsException- еслиoffset+N < 0илиoffset+N >= a.lengthдля любого каналаNв векторе, где маска установлена
intoBooleanArray
public final void intoBooleanArray(boolean[] a, int offset, int[] indexMap, int mapOffset)
boolean[] с использованием индексов, полученных путём добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность VLENGTH элементов во втором массиве int , начиная с заданного mapOffset. Для каждого канала вектора, где N — это индекс канала вектора, элемент канала с индексом N сначала преобразуется в значение boolean и затем сохраняется в элемент массива a[f(N)], где f(N) — это выражение сопоставления индексов offset + indexMap[mapOffset + N]].
Значение byte преобразуется в значение boolean путём применения выражения (b & 1) != 0, где b — это значение байта.
- Параметры:
-
a- массив -
offset- смещение для комбинирования со смещениями карты индексов -
indexMap- карта индексов -
mapOffset- смещение в карте индексов - Исключения:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вa, для любого каналаNв векторе - См. также:
intoBooleanArray
public final void intoBooleanArray(boolean[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Byte> m)
boolean[], под управлением маски, и используя индексы, полученные путём добавления фиксированного offset к ряду вторичных смещений из карты индексов. Карта индексов — это непрерывная последовательность VLENGTH элементов во втором массиве int , начиная с заданного mapOffset. Для каждого канала вектора, где N — это индекс канала вектора, если канал маски с индексом N установлен, то элемент канала с индексом N сначала преобразуется в значение boolean и затем сохраняется в элемент массива a[f(N)], где f(N) — это выражение сопоставления индексов offset + indexMap[mapOffset + N]].
Значение byte преобразуется в значение boolean путём применения выражения (b & 1) != 0, где b — это значение байта.
- Параметры:
-
a- массив -
offset- смещение для комбинирования со смещениями карты индексов -
indexMap- карта индексов -
mapOffset- смещение в карте индексов -
m- маска - Исключения:
-
IndexOutOfBoundsException- еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вa, для любого каналаNв векторе, где маска установлена - См. также:
intoByteArray
public final void intoByteArray(byte[] a, int offset, ByteOrder bo)
Байты извлекаются из элементов примитивных каналов в соответствии с указанным порядком байтов. Каналы сохраняются в соответствии с их порядком памяти.
Этот метод работает так, как если бы он вызывал intoByteBuffer() следующим образом:
var bb = ByteBuffer.wrap(a);
var m = maskAll(true);
intoByteBuffer(bb, offset, bo, m);
- Указано в:
-
intoByteArrayв классеVector<Byte> - Параметры:
-
a- массив байтов -
offset- смещение в массиве -
bo- желаемый порядок байтов
intoByteArray
public final void intoByteArray(byte[] a, int offset, ByteOrder bo, VectorMask<Byte> m)
Байты извлекаются из элементов примитивных каналов в соответствии с указанным порядком байтов. Каналы сохраняются в соответствии с их порядком памяти.
Этот метод работает так, как если бы он вызывал intoByteBuffer() следующим образом:
var bb = ByteBuffer.wrap(a);
intoByteBuffer(bb, offset, bo, m);
- Указано в:
-
intoByteArrayв классеVector<Byte> - Параметры:
-
a- массив байтов -
offset- смещение в массиве -
bo- желаемый порядок байтов -
m- маска, управляющая выбором каналов
intoByteBuffer
public final void intoByteBuffer(ByteBuffer bb, int offset, ByteOrder bo)
Байты извлекаются из примитивных элементов-лейнов в соответствии с указанным порядком байтов. Лейны сохраняются в соответствии с их порядком в памяти.
Этот метод работает так, как будто он вызывает intoByteBuffer() следующим образом:
var m = maskAll(true);
intoByteBuffer(bb, offset, bo, m);
- Specified by:
-
intoByteBufferin classVector<Byte> - Parameters:
-
bb- буфер байтов -
offset- смещение в массиве -
bo- требуемый порядок байтов
intoByteBuffer
public final void intoByteBuffer(ByteBuffer bb, int offset, ByteOrder bo, VectorMask<Byte> m)
Байты извлекаются из примитивных элементов-лейнов в соответствии с указанным порядком байтов. Лейны сохраняются в соответствии с их порядком в памяти.
Следующий псевдокод иллюстрирует поведение, где примитивный тип элемента не является byte, EBuffer — тип примитивного буфера, ETYPE — примитивный тип элемента, а EVector — примитивный тип вектора для этого вектора:
EBuffer eb = bb.duplicate()
.position(offset)
.order(bo).asEBuffer();
ETYPE[] a = this.toArray();
for (int n = 0; n < a.length; n++) {
if (m.laneIsSet(n)) {
eb.put(n, a[n]);
}
}
Когда примитивный тип элемента является byte, примитивный буфер байтов получается следующим образом, при этом операции с буфером остаются такими же, как в предыдущем псевдокоде:
ByteBuffer eb = bb.duplicate()
.position(offset);
- Specified by:
-
intoByteBufferin classVector<Byte> - Parameters:
-
bb- буфер байтов -
offset- смещение в массиве -
bo- требуемый порядок байтов -
m- маска, определяющая выбор лейнов
reinterpretAsBytes
public final ByteVector reinterpretAsBytes()
byte, где байты извлекаются из лейнов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(byte.class)). Его можно рассматривать как обратный к различным методам, которые объединяют байты в большие лейны в одном векторе, например, Vector.reinterpretAsInts(). - Specified by:
-
reinterpretAsBytesin classVector<Byte> - Returns:
- вектор
ByteVectorс той же формой и содержанием - See Also:
viewAsIntegralLanes
public final ByteVector viewAsIntegralLanes()
VSHAPE или VLENGTH, и содержимое вектора в битовом представлении не меняется. Если тип лейнов вектора уже является целым типом, возвращается тот же вектор без изменений. Этот метод возвращает значение этого выражения: convert(conv,0), где conv — VectorOperators.Conversion.ofReinterpret(E.class,F.class), а F — тип целых чисел такого же размера, как E. - Specified by:
-
viewAsIntegralLanesin classVector<Byte> - Returns:
- исходный вектор, переинтерпретированный как целочисленный
- See Also:
viewAsFloatingLanes
public final Vector<?> viewAsFloatingLanes()
VSHAPE или VLENGTH, и содержимое вектора в битовом представлении не меняется. Если тип лейнов вектора уже является типом с плавающей точкой, возвращается тот же вектор без изменений. Если размер элемента вектора не соответствует размеру ни одного типа с плавающей точкой, выбрасывается IllegalArgumentException. Этот метод возвращает значение этого выражения: convert(conv,0), где conv — VectorOperators.Conversion.ofReinterpret(E.class,F.class), а F — тип с плавающей точкой такого же размера, как E, если таковой существует. - Specified by:
-
viewAsFloatingLanesin classVector<Byte> - Implementation Note:
- Этот метод всегда выбрасывает
UnsupportedOperationException, потому что нет типа с плавающей точкой такого же размера, какbyte. Тип возвращаемого значения этого метода произвольно обозначен какVector<?>. В будущих версиях этого API тип возвращаемого значения может измениться, если появятся дополнительные типы с плавающей точкой. - Returns:
- исходный вектор, переинтерпретированный как вектор с плавающей точкой
- See Also:
toString
public final String toString()
"[0,1,2...]", отображающее значения лейнов этого вектора в порядке лейнов. Строка формируется как при вызове Arrays.toString(), соответствующим массиву byte возвращаемому методом this.toArray().- Specified by:
-
toStringin classVector<Byte> - Returns:
- строка вида
"[0,1,2...]", отображающая значения лейнов этого вектора
equals
public final boolean equals(Object obj)
Сравнение значений лейнов производится так, как если бы был вызван метод Arrays.equals(), соответствующим массивам, возвращаемым методом toArray() для обоих векторов.
- Specified by:
-
equalsin classVector<Byte> - Parameters:
-
obj- ссылка на объект для сравнения. - Returns:
- является ли этот вектор идентичным какому-либо другому объекту
- See Also:
hashCode
public final int hashCode()
- Specified by:
-
hashCodein classVector<Byte> - Returns:
- значение хэш-кода для этого вектора
- See Also:
species
public final VectorSpecies<Byte> species()
Vector- Specified by:
-
speciesin classVector<E> - Returns:
- вид этого вектора
check
public final <F> Vector<F> check(VectorSpecies<F> species)
Vectorspecies == species()
? this
: throw new ClassCastException().- Specified by:
-
checkin classVector<E> - Type Parameters:
-
F- упакованный тип элемента требуемого вида - Parameters:
-
species- требуемый вид - Returns:
- тот же вектор
- See Also:
Проверка
public final <F> Vector<F> check(Class<F> elementType)
elementType == species().elementType()
? this
: throw new ClassCastException(). - Указано в:
-
checkв классеVector<E> - Параметры типа:
-
F- упакованный тип элемента требуемого типа дорожки - Параметры:
-
elementType- требуемый тип дорожки - Возвращает:
- тот же вектор
- См. также:
maskAll
public final VectorMask<Byte> maskAll(boolean bit)
Этот метод возвращает значение данного выражения: species().maskAll(bit).
- Указано в:
-
maskAllв классеVector<E> - Параметры:
-
bit- заданный бит маски, который будет дублироваться - Возвращает:
- маска, где каждая дорожка установлена или сброшена в соответствии с заданным битом
- См. также:
reinterpretAsShorts
public ShortVector reinterpretAsShorts()
short, где дорожки собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(short.class)). Его можно рассматривать как обратный Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsShortsв классеVector<E> - Возвращает:
- a
ShortVectorс той же формой и информационным содержанием
reinterpretAsInts
public IntVector reinterpretAsInts()
int, где дорожки собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(int.class)). Его можно рассматривать как обратный Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsIntsв классеVector<E> - Возвращает:
- a
IntVectorс той же формой и информационным содержанием
reinterpretAsLongs
public LongVector reinterpretAsLongs()
long, где дорожки собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(long.class)). Его можно рассматривать как обратный Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsLongsв классеVector<E> - Возвращает:
- a
LongVectorс той же формой и информационным содержанием
reinterpretAsFloats
public FloatVector reinterpretAsFloats()
float, где дорожки собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(float.class)). Его можно рассматривать как обратный Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsFloatsв классеVector<E> - Возвращает:
- a
FloatVectorс той же формой и информационным содержанием
reinterpretAsDoubles
public DoubleVector reinterpretAsDoubles()
double, где дорожки собираются из последовательных байтов в соответствии с порядком little-endian. Это удобный метод для выражения reinterpretShape(species().withLanes(double.class)). Его можно рассматривать как обратный Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsDoublesв классеVector<E> - Возвращает:
- a
DoubleVectorс той же формой и информационным содержанием
convert
public final <F> Vector<F> convert(VectorOperators.Conversion<Byte,F> conv, int part)
ETYPE в новый тип элементов (называемый FTYPE здесь) в соответствии с указанным преобразованием преобразования. Это операция, инвариантная к форме на уровне элементов, которая копирует ETYPE значения из входного вектора в соответствующие FTYPE значения в результате. В зависимости от выбранного преобразования, эта операция может либо расширять или сжимать свой логический результат, в этом случае ненулевое part число может дополнительно управлять выбором и направлением логического результата в физический выходной вектор. Каждый конкретный тип преобразования описывается константой преобразования в классе VectorOperators. Каждый оператор преобразования имеет указанный тип области и тип диапазона. Тип области должен точно совпадать с типом элементов входного вектора, а тип диапазона определяет тип элементов выходных векторов.
Оператор преобразования может быть классифицирован как (соответственно) выполняющийся на месте, расширяющийся или сжимающийся, в зависимости от того, является ли размер в битах его типа области (соответственно) равным, меньшим или большим размера в битах его типа диапазона.
Независимо от этого, операции преобразования также могут быть классифицированы как повторные или преобразующие значения, в зависимости от того, копирует ли преобразование биты представления без изменений или изменяет биты представления, чтобы сохранить (часть или все) логическое значение входного значения.
Если повторное преобразование сжимается, оно обрезает старшие биты входных данных. Если оно расширяется, оно заполняет старшие биты результата нулями, когда нет соответствующих битов входных данных.
Расширяющее преобразование, такое как S2I (short значение в int ), принимает скалярное значение и представляет его в более широком формате (всегда с некоторой избыточностью информации). Сжимающее преобразование, такое как D2F (double значение в float ), принимает скалярное значение и представляет его в более узком формате (всегда с некоторой потерей информации). Некоторые преобразования на месте также могут включать потерю информации, такие как L2D (long значение в double ) или F2I (float значение в int ). Повторные преобразования на месте не являются потерянными, если битовое значение каким-то образом не является допустимым в типе результата. Преобразование битового шаблона NaN может отбрасывать биты из мантиссы NaN.
Эта классификация важна, потому что, если не указано иное, операции преобразования никогда не изменяют форму вектора, независимо от того, как они могут изменить размер элементов. Поэтому при расширяющем преобразовании не все результаты могут быть сохранены в выходном векторе, так как выходной вектор имеет меньше элементов большего размера для сохранения общего размера в битах, равного входу. Аналогично, при сжимающем преобразовании его относительно небольшие результаты должны быть сохранены в подмножестве элементов выходного вектора, а неиспользуемые элементы устанавливаются в ноль.
Например, преобразование из byte в long (M=8 ) отбросит 87,5% входных значений для преобразования оставшихся 12,5% в более емкие long элементы выходного вектора. Обратное преобразование преобразует все большие результаты, но 87,5% элементов выходного вектора будут потеряны. Преобразования на месте (M=1 ) возвращают все результаты в одном выходном векторе без потери элементов.
Для управления подробностями этих расширений и сжатий параметр, не равный нулю, part выбирает частичные результаты из расширений или направляет результаты сжатий в соответствующие места следующим образом:
- при расширении на
M:partдолжен быть в диапазоне[0..M-1], и выбирает блок изVLENGTH/Mвходных элементов, начинающийся с элемента начала вpart*VLENGTH/M.Выходные
VLENGTH/Mэлементы представляют собой частичный срез всего логического результата преобразования, заполняющего весь физический выходной вектор. - при сжатии на
M:partдолжен быть в диапазоне[-M+1..0], и направляет всеVLENGTHвходные элементы в результат, расположенный в элементе начала-part*VLENGTH. ВсегоVLENGTH*Mвыходных элементов, а не содержащие преобразованные входные значения заполняются нулями.Группа таких выходных векторов с логическими частями результата, направленными в разные блоки, может быть собрана с помощью побитового или или (для чисел с плавающей запятой) оператора
FIRST_NONZERO. - на месте (
M=1):partдолжно быть равно нулю. Оба вектора имеют одинаковыйVLENGTH. Результат всегда расположен в элементе начала нуля.
Этот метод является ограниченной версией более общего, но менее часто используемого метода изменения формы convertShape(). Результат этого метода совпадает с выражением this.convertShape(conv, rsp, this.broadcast(part)), где выходной вид rsp=this.species().withLanes(FTYPE.class).
- Specified by:
-
convertв классеVector<E> - Type Parameters:
-
F- упакованный тип элемента вида - Parameters:
-
conv- желаемое скалярное преобразование, применяемое к элементам -
part- номер части результата или ноль, если расширение или сжатие не происходят - Returns:
- вектор, преобразованный по форме и типу элементов из этого вектора
- See Also:
castShape
public final <F> Vector<F> castShape(VectorSpecies<F> toSpecies, int part)
convertShape(conv,rsp,part), где conv равно VectorOperators.Conversion.ofCast(E.class,F.class). Если у старого и нового видов разная форма, это изменение формы операция и может иметь особые затраты реализации.
- Specified by:
-
castShapeв классеVector<E> - Type Parameters:
-
F- упакованный тип элемента выходного вида - Parameters:
-
toSpecies- желаемый выходной вид -
part- номер части результата или ноль, если расширение или сжатие не происходят - Returns:
- вектор, преобразованный по типу элемента из этого вектора
- See Also:
convertShape
public abstract <F> Vector<F> convertShape(VectorOperators.Conversion<Byte,F> conv, VectorSpecies<F> rsp, int part)
ETYPE в новый тип прохода (называемый FTYPE здесь) в соответствии с указанным преобразованием. Это операция по каналам, которая копирует ETYPE значения из входного вектора в соответствующие FTYPE значения в результате. Если у старого и нового видов одинаковая форма, поведение точно такое же, как у более простого метода, не изменяющего форму, convert(). В таких случаях следует использовать более простой метод convert(), чтобы упростить понимание кода. В противном случае это операция изменения формы, и она может иметь особые затраты на реализацию.
В качестве комбинированного эффекта изменений формы и размера прохода, входной и выходной виды могут иметь различное количество проходов, что приводит к расширению или сжатию. В этом случае параметр part с ненулевым значением выбирает частичные результаты из расширенного логического результата или направляет результаты сжатого логического результата в физический выходной вектор требуемого выходного вида.
Следующий псевдокод иллюстрирует поведение этого метода для преобразований на месте, расширения и сжатия. (Этот псевдокод также применим к методу, не изменяющему форму, но с ограничениями формы на выходной вид.) Обратите внимание, что только один из трех путей кода актуален для любой конкретной комбинации оператора преобразования и форм.
FTYPE scalar_conversion_op(ETYPE s);
EVector a = ...;
VectorSpecies<F> rsp = ...;
int part = ...;
VectorSpecies<E> dsp = a.species();
int domlen = dsp.length();
int ranlen = rsp.length();
FTYPE[] logical = new FTYPE[domlen];
for (int i = 0; i < domlen; i++) {
logical[i] = scalar_conversion_op(a.lane(i));
}
FTYPE[] physical;
if (domlen == ranlen) { // in-place
assert part == 0; //else AIOOBE
physical = logical;
} else if (domlen > ranlen) { // expanding
int M = domlen / ranlen;
assert 0 <= part && part < M; //else AIOOBE
int origin = part * ranlen;
physical = Arrays.copyOfRange(logical, origin, origin + ranlen);
} else { // (domlen < ranlen) // contracting
int M = ranlen / domlen;
assert 0 >= part && part > -M; //else AIOOBE
int origin = -part * domlen;
System.arraycopy(logical, 0, physical, origin, domlen);
}
return FVector.fromArray(ran, physical, 0);
- Задано:
-
convertShapeв классеVector<E> - Типы параметров:
-
F- упакованный тип элемента выходного вида - Параметры:
-
conv- желаемое скалярное преобразование для применения по каналам -
rsp- желаемый выходной вид -
part- номер части результата или ноль, если ни расширение, ни сжатие не выполняются - Возвращает:
- вектор, преобразованный по типу элементов из этого вектора
- См. также:
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.vector/jdk/incubator/vector/ByteVector.html