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