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