Класс 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, извлекая байты из полос в порядке от младшего к старшему. |
DoubleVector |
reinterpretAsDoubles() |
Переинтерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом полос double; полосы формируются из последовательных байтов в порядке от младшего к старшему. |
FloatVector |
reinterpretAsFloats() |
Переинтерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом полос float; полосы формируются из последовательных байтов в порядке от младшего к старшему. |
IntVector |
reinterpretAsInts() |
Переинтерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом полос int; полосы формируются из последовательных байтов в порядке от младшего к старшему. |
LongVector |
reinterpretAsLongs() |
Переинтерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом полос long; полосы формируются из последовательных байтов в порядке от младшего к старшему. |
ShortVector |
reinterpretAsShorts() |
Переинтерпретирует этот вектор как вектор той же формы и с тем же содержимым, но с типом полос short; полосы формируются из последовательных байтов в порядке от младшего к старшему. |
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() |
Возвращает массив long[], содержащий значения всех полос, преобразованные к типу long. |
final String |
toString() |
Возвращает строковое представление этого вектора в форме "[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 |
Возвращает вектор заданного вида, во всех полосах которого установлено нулевое значение — значение примитивного типа по умолчанию. |
Методы, объявленные в классе Vector
bitSize, byteSize, compare, elementSize, elementType, length, reduceLanesToLong, reduceLanesToLong, reinterpretShape, shape, toShuffle
Подробное описание полей
SPECIES_64
public static final VectorSpecies<Double> SPECIES_64
DoubleVector размером VectorShape.S_64_BIT.SPECIES_128
public static final VectorSpecies<Double> SPECIES_128
DoubleVector размером VectorShape.S_128_BIT.SPECIES_256
public static final VectorSpecies<Double> SPECIES_256
DoubleVector размером VectorShape.S_256_BIT.SPECIES_512
public static final VectorSpecies<Double> SPECIES_512
DoubleVector размером VectorShape.S_512_BIT.SPECIES_MAX
public static final VectorSpecies<Double> SPECIES_MAX
DoubleVector максимального размера VectorShape.S_Max_BIT.SPECIES_PREFERRED
public static final VectorSpecies<Double> SPECIES_PREFERRED
DoubleVector. Предпочтительный вид — это вид с максимальным размером в битах для данной платформы.Подробное описание методов
zero
public static DoubleVector zero(VectorSpecies<Double> species)
- Параметры:
-
species— вид требуемого нулевого вектора - Возвращает:
- нулевой вектор
broadcast
public abstract DoubleVector broadcast(double e)
e. Содержимое текущего вектора отбрасывается; для этой операции важен только его вид. Этот метод возвращает значение следующего выражения: DoubleVector.broadcast(this.species(), e).
- Примечание к API:
- В отличие от похожего метода с именем
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:
- При работе с подтипами векторов, такими как
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в классеVector<Double> - Параметры:
-
op— операция для объединения значений элементов дорожек -
v1— второй входной вектор -
v2— третий входной вектор -
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в классеVector<Double> - Параметры:
-
op— операция, используемая для сравнения значений элементов -
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в классеVector<Double> - Параметры:
-
op— операция, используемая для сравнения значений элементов -
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[], содержащий все значения lane, преобразованные к типу double. Длина массива совпадает с длиной вектора. Элементы массива преобразуются посредством приведения типа и сохраняются в порядке lane. Эта операция может привести к потере точности, если тип элемента вектора — long. - Указано в:
-
toDoubleArrayв классеVector<Double> - Примечание по реализации:
- Это псевдоним для
toArray(). При использовании этого метода для векторов типаDoubleVectorпотеря точности отсутствует. - Возвращает:
- массив типа
double[], содержащий значения lane этого вектора, возможно, округлённые до представимых значений типаdouble - См. также:
fromArray
public static DoubleVector fromArray(VectorSpecies<Double> species, double[] a, int offset)
double[], начиная с заданного смещения. Для каждой lane вектора, где N — индекс lane вектора, элемент массива с индексом offset + N помещается в результирующий вектор в lane с индексом N.- Параметры:
-
species— тип вектора -
a— массив -
offset— смещение в массиве - Возвращает:
- вектор, загруженный из массива
- Выбрасывает:
-
IndexOutOfBoundsException— еслиoffset+N < 0илиoffset+N >= a.lengthдля любой laneNв векторе
fromArray
public static DoubleVector fromArray(VectorSpecies<Double> species, double[] a, int offset, VectorMask<Double> m)
double[], начиная с заданного смещения и используя маску. Lane, для которых маска не установлена, заполняются значением по умолчанию для double (положительный ноль). Для каждой lane вектора, где N — индекс lane вектора, если маска установлена для lane с индексом N, элемент массива с индексом offset + N помещается в результирующий вектор в lane с индексом N, иначе в результирующий вектор в lane с индексом N помещается значение элемента по умолчанию.- Параметры:
-
species— тип вектора -
a— массив -
offset— смещение в массиве -
m— маска, управляющая выбором lane - Возвращает:
- вектор, загруженный из массива
- Выбрасывает:
-
IndexOutOfBoundsException— еслиoffset+N < 0илиoffset+N >= a.lengthдля любой laneNв векторе, для которой установлена маска
fromArray
public static DoubleVector fromArray(VectorSpecies<Double> species, double[] a, int offset, int[] indexMap, int mapOffset)
double[], используя индексы, полученные прибавлением фиксированного offset к последовательности дополнительных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность из VLENGTH элементов во втором массиве типа int, начиная с заданного mapOffset. Для каждой lane вектора, где N — индекс lane вектора, lane загружается из элемента массива 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для любой laneNв векторе - См. также:
fromArray
public static DoubleVector fromArray(VectorSpecies<Double> species, double[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Double> m)
double[] под управлением маски, используя индексы, полученные прибавлением фиксированного offset к последовательности дополнительных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность из VLENGTH элементов во втором массиве типа int, начиная с заданного mapOffset. Для каждой lane вектора, где N — индекс lane вектора, если lane установлена в маске, она загружается из элемента массива a[f(N)], где f(N) — выражение для отображения индексов offset + indexMap[mapOffset + N]]. Неустановленные lane результирующего вектора заполняются нулями.
- Параметры:
-
species— тип вектора -
a— массив -
offset— смещение в массиве; может быть отрицательным, если относительные индексы в карте индексов компенсируют его и дают значение в пределах массива -
indexMap— карта индексов -
mapOffset— смещение в карте индексов -
m— маска, управляющая выбором lane - Возвращает:
- вектор, загруженный из элементов массива по индексам
- Выбрасывает:
-
IndexOutOfBoundsException— еслиmapOffset+N < 0или еслиmapOffset+N >= indexMap.length, или еслиf(N)=offset+indexMap[mapOffset+N]является недопустимым индексом вaдля любой laneNвектора, для которой установлена маска - См. также:
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()для любой laneNв векторе -
IllegalStateException— если сессия сегмента памяти не активна или доступ выполняется из потока, отличного от потока-владельца сессии. - Начиная с:
- 19
fromMemorySegment
public static DoubleVector fromMemorySegment(VectorSpecies<Double> species, MemorySegment ms, long offset, ByteOrder bo, VectorMask<Double> m)
double (положительный ноль). Байты объединяются в примитивные элементы lane в соответствии с указанным порядком байтов. Lane вектора располагаются в соответствии с порядком в памяти. Следующий псевдокод иллюстрирует поведение:
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);
- Примечание по реализации:
- Эта операция, вероятно, будет более эффективной, если указанный порядок байтов совпадает с собственным порядком байтов платформы, поскольку в этом случае методу не потребуется менять порядок байтов значений lane.
- Параметры:
-
species— тип вектора -
ms— сегмент памяти -
offset— смещение в сегменте памяти -
bo— требуемый порядок байтов -
m— маска, управляющая выбором lane - Возвращает:
- вектор, загруженный из сегмента памяти
- Выбрасывает:
-
IndexOutOfBoundsException— еслиoffset+N*8 < 0илиoffset+N*8 >= ms.byteSize()для любой laneNвектора, для которой установлена маска -
IllegalStateException— если сессия сегмента памяти не активна или доступ выполняется из потока, отличного от потока-владельца сессии. - Начиная с:
- 19
intoArray
public final void intoArray(double[] a, int offset)
double[], начиная с заданного смещения. Для каждой lane вектора, где N — индекс lane вектора, элемент lane с индексом N сохраняется в элемент массива a[offset+N].
- Параметры:
-
a— массив типаdouble[] -
offset— смещение в массиве - Выбрасывает:
-
IndexOutOfBoundsException— еслиoffset+N < 0илиoffset+N >= a.lengthдля любой laneNв векторе
intoArray
public final void intoArray(double[] a, int offset, VectorMask<Double> m)
double[], начиная с заданного смещения и используя маску. Для каждой lane вектора, где N — индекс lane вектора, элемент lane с индексом N сохраняется в элемент массива a[offset+N]. Если маска для lane с индексом N не установлена, соответствующий элемент массива a[offset+N] остаётся без изменений.
Проверка диапазона массива выполняется для lane, для которых установлена маска. Неустановленные lane не сохраняются и не должны соответствовать допустимым элементам a. То есть неустановленные lane могут соответствовать индексам массива меньше нуля или выходящим за его конец.
- Параметры:
-
a— массив типаdouble[] -
offset— смещение в массиве -
m— маска, управляющая сохранением lane - Выбрасывает:
-
IndexOutOfBoundsException— еслиoffset+N < 0илиoffset+N >= a.lengthдля любой laneNвектора, для которой установлена маска
intoArray
public final void intoArray(double[] a, int offset, int[] indexMap, int mapOffset)
double[], используя индексы, полученные прибавлением фиксированного offset к последовательности дополнительных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность из VLENGTH элементов во втором массиве типа int, начиная с заданного mapOffset. Для каждой lane вектора, где N — индекс lane вектора, элемент lane с индексом 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для любой laneNв векторе - См. также:
intoArray
public final void intoArray(double[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Double> m)
double[] под управлением маски, используя индексы, полученные прибавлением фиксированного offset к последовательности дополнительных смещений из карты индексов. Карта индексов представляет собой непрерывную последовательность из VLENGTH элементов во втором массиве типа int, начиная с заданного mapOffset. Для каждой lane вектора, где N — индекс lane вектора, если маска установлена для lane с индексом N, элемент lane с индексом 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для любой laneNвектора, для которой установлена маска - См. также:
intoMemorySegment
public final void intoMemorySegment(MemorySegment ms, long offset, ByteOrder bo)
Байты извлекаются из примитивных элементов lane в соответствии с указанным порядком байтов. Lane сохраняются в соответствии с их порядком в памяти.
Этот метод ведёт себя так, как если бы вызывал 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)
Байты извлекаются из примитивных элементов lane в соответствии с указанным порядком байтов. Lane сохраняются в соответствии с их порядком в памяти.
Следующий псевдокод иллюстрирует поведение, где 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— маска, управляющая выбором lane - Начиная с:
- 19
reinterpretAsBytes
public final ByteVector reinterpretAsBytes()
byte, извлекая байты из lane в порядке от младшего к старшему. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(byte.class)). Его можно считать обратным к различным методам, объединяющим байты в более широкие lane в том же векторе, например Vector.reinterpretAsInts(). - Указано в:
-
reinterpretAsBytesв классеVector<Double> - Возвращает:
ByteVectorс той же формой и информационным содержимым- См. также:
viewAsIntegralLanes
public final LongVector viewAsIntegralLanes()
VSHAPE или VLENGTH, а побитовое содержимое вектора остаётся прежним. Если ETYPE вектора уже является целочисленным типом, возвращается тот же вектор без изменений. Этот метод возвращает значение следующего выражения: convert(conv,0), где conv — VectorOperators.Conversion.ofReinterpret(E.class,F.class), а F — тип без плавающей точки того же размера, что и E. - Указано в:
-
viewAsIntegralLanesв классеVector<Double> - Возвращает:
- исходный вектор, переинтерпретированный как вектор с целочисленным типом
- См. также:
viewAsFloatingLanes
public final DoubleVector viewAsFloatingLanes()
VSHAPE или VLENGTH, а побитовое содержимое вектора остаётся прежним. Если ETYPE вектора уже является типом с плавающей точкой, возвращается тот же вектор без изменений. Если размер элемента вектора не соответствует размеру ни одного типа с плавающей точкой, выбрасывается 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...]", содержащее значения lane вектора в порядке lane. Строка формируется так, как если бы был вызван метод Arrays.toString(), соответствующий массиву типа double, возвращённому методом this.toArray().equals
public final boolean equals(Object obj)
Сравнение значений lane выполняется так, как если бы был вызван метод 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; lane формируются из последовательных байтов в порядке от младшего к старшему. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(short.class)). Его можно считать обратным к Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsShortsв классеVector<E> - Возвращает:
ShortVectorс той же формой и информационным содержимым
reinterpretAsInts
public IntVector reinterpretAsInts()
int, где lanes формируются из последовательных байтов в порядке little-endian. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(int.class)). Его можно считать обратным к Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsIntsв классеVector<E> - Возвращает:
IntVectorтой же формы и с тем же информационным содержимым
reinterpretAsLongs
public LongVector reinterpretAsLongs()
long, где lanes формируются из последовательных байтов в порядке little-endian. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(long.class)). Его можно считать обратным к Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsLongsв классеVector<E> - Возвращает:
LongVectorтой же формы и с тем же информационным содержимым
reinterpretAsFloats
public FloatVector reinterpretAsFloats()
float, где lanes формируются из последовательных байтов в порядке little-endian. Это вспомогательный метод для выражения reinterpretShape(species().withLanes(float.class)). Его можно считать обратным к Vector.reinterpretAsBytes(). - Указано в:
-
reinterpretAsFloatsв классеVector<E> - Возвращает:
FloatVectorтой же формы и с тем же информационным содержимым
reinterpretAsDoubles
public DoubleVector reinterpretAsDoubles()
double, где lanes формируются из последовательных байтов в порядке 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 в новый тип lane (далее — FTYPE) в соответствии с указанным преобразованием. Это операция, выполняемая поэлементно и сохраняющая форму; она копирует значения ETYPE из входного вектора в соответствующие значения FTYPE результата. В зависимости от выбранного преобразования эта операция может расширить или сузить логический результат; в этом случае ненулевое число part может дополнительно управлять выбором и размещением логического результата в физическом выходном векторе. Каждое конкретное преобразование описывается константой преобразования в классе VectorOperators. Для каждого оператора преобразования заданы тип домена и тип диапазона. Тип домена должен точно соответствовать типу lane входного вектора, а тип диапазона определяет тип lane выходных векторов.
Оператор преобразования может классифицироваться как преобразование без изменения размера, расширяющее или сужающее — в зависимости от того, равен ли размер в битах его типа домена размеру в битах типа диапазона, меньше или больше него соответственно.
Независимо от этого, операции преобразования также можно классифицировать как переинтерпретирующие или преобразующие значения: в зависимости от того, копирует ли преобразование биты представления без изменений или изменяет их, чтобы сохранить (частично или полностью) логическое значение входного значения.
Если переинтерпретирующее преобразование сужает значение, оно отбрасывает старшие биты входных данных. Если оно расширяет значение, то дополняет старшие биты результата нулями, когда им не соответствуют входные биты.
Расширяющее преобразование, например S2I (значение short в int), принимает скалярное значение и представляет его в более широком формате (всегда с некоторой избыточностью информации). Сужающее преобразование, например D2F (значение double в float), принимает скалярное значение и представляет его в более компактном формате (всегда с некоторой потерей информации). Некоторые преобразования без изменения размера также могут приводить к потере информации, например L2D (значение long в double) или F2I (значение float в int). Переинтерпретирующие преобразования без изменения размера не приводят к потере данных, если только побитовое значение по какой-либо причине не является допустимым для выходного типа. Преобразование битового шаблона NaN может отбросить биты мантиссы NaN.
Эта классификация важна, поскольку, если не указано иное, операции преобразования никогда не меняют форму вектора, независимо от того, как они могут менять размер lane. Поэтому расширяющее преобразование не может сохранить все результаты в выходном векторе: для сохранения общего размера в битах входного вектора в выходном векторе с более крупными элементами будет меньше lanes. Аналогично, сужающее преобразование должно поместить относительно небольшие результаты в часть lanes выходного вектора, а неиспользуемые lanes по умолчанию заполнить нулями.
Например, преобразование из byte в long (M=8) отбросит 87,5 % входных значений, чтобы преобразовать оставшиеся 12,5 % в увеличенные lanes long выходного вектора. Обратное преобразование преобразует обратно все крупные результаты, но 87,5 % lanes выходного вектора останутся неиспользованными. Преобразования без изменения размера (M=1) возвращают все результаты в одном выходном векторе, не оставляя lanes неиспользованными.
Чтобы управлять особенностями этих расширений и сужений, ненулевой параметр part выбирает частичные результаты расширения или направляет результаты сужения в соответствующие позиции, как описано ниже:
- расширение в
Mраз:partдолжно находиться в диапазоне[0..M-1]и выбирает блок изVLENGTH/Mвходных lanes, начинающийся с начальной lanepart*VLENGTH/M.Выходные lanes
VLENGTH/Mпредставляют собой частичный фрагмент полного логического результата преобразования, заполняющий весь физический выходной вектор. - сужение в
Mраз:partдолжно находиться в диапазоне[-M+1..0]и направляет всеVLENGTHвходных lanes в выходной вектор, начиная с начальной lane-part*VLENGTH. Всего имеетсяVLENGTH*Mвыходных lanes; те из них, в которых нет преобразованных входных значений, заполняются нулями.Группу таких выходных векторов, в которых части логического результата направлены в непересекающиеся блоки, можно объединить с помощью оператора побитового ИЛИ или (для чисел с плавающей запятой) оператора
FIRST_NONZERO. - без изменения размера (
M=1):partдолжно быть равно нулю. Оба вектора имеют одинаковоеVLENGTH. Результат всегда располагается в начальной lane с индексом ноль.
Этот метод представляет собой ограниченную версию более общего, но реже используемого метода с изменением формы convertShape(). Результат этого метода совпадает с результатом выражения this.convertShape(conv, rsp, this.broadcast(part)), где выходной вид — rsp=this.species().withLanes(FTYPE.class).
- Указано в:
-
convertв классеVector<E> - Параметры типа:
F— упакованный тип элементов вида- Параметры:
-
conv— требуемое скалярное преобразование, применяемое к каждой lane -
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<Double,F> conv, VectorSpecies<F> rsp, int part)
ETYPE в новый тип lane (далее — FTYPE) в соответствии с указанным преобразованием. Это операция, выполняемая поэлементно; она копирует значения ETYPE из входного вектора в соответствующие значения FTYPE результата. Если старая и новая виды имеют одинаковую форму, поведение в точности совпадает с поведением более простого метода, сохраняющего форму: convert(). В таких случаях следует использовать более простой метод convert(), чтобы упростить анализ кода. В противном случае операция меняет форму и может повлечь особые затраты на реализацию.
Совместное изменение формы и размера lane может привести к тому, что входной и выходной виды будут иметь разное количество lanes, то есть произойдет расширение или сужение. В этом случае ненулевой параметр 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— требуемое скалярное преобразование, применяемое к каждой lane -
rsp— требуемый выходной вид -
part— номер части результата или ноль, если преобразование не расширяет и не сужает - Возвращает:
- вектор, преобразованный из этого вектора по типу элементов
- См. также:
getPayload
protected final Object getPayload()
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/jdk.incubator.vector/jdk/incubator/vector/DoubleVector.html