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