Spec-Zone.ru › OpenJDK 21

Интерфейс VectorSpecies<E>

Параметры типа:
E - упакованный аналог ETYPE, тип элементов вектора
public interface VectorSpecies<E>
VectorSpecies опирается на предварительные возможности платформы Java:
  • VectorSpecies относится к одному или нескольким предварительным API: MemorySegment.
Программы могут использовать VectorSpecies только при включенных предварительных функциях.
Предварительные функции могут быть удалены в будущих версиях или переведены в постоянные функции платформы Java.
Интерфейс для управления всеми векторами с одинаковой комбинацией типа элемента (ETYPE) и shape.
Примечание API:
Код пользователя не должен реализовывать этот интерфейс. В будущей версии этого типа реализации могут быть ограничены принадлежностью к одному пакету.
Примечание реализации:
Строковое представление экземпляра этого интерфейса будет иметь вид "Species[ETYPE, VLENGTH, SHAPE]", где ETYPE - примитивный тип элемента, VLENGTH - количество разрядов вектора, связанных со видом, а SHAPE - форма вектора, связанная с видом.

Объекты Vector species могут храниться в локальных переменных, параметрах и как константы static final, но их хранение в других полях Java или элементах массивов, хотя и семантически допустимо, может привести к снижению производительности.

Краткое описание методов

Модификатор и тип Метод Описание
Vector<E> broadcast(long e)
Возвращает вектор данного вида, где все элементы разряда установлены в примитивное значение e.
<F> VectorSpecies<F> check(Class<F> elementType)
Проверяет, что этот вид имеет указанный тип элемента, и возвращает этот вид без изменений.
long checkValue(long e)
Проверяет, что этот вид может представлять данное значение элемента, и возвращает значение без изменений.
int elementSize()
Возвращает размер разряда в битах векторов этого вида.
static int elementSize(Class<?> elementType)
Возвращает размер в битах данного типа элемента вектора (ETYPE).
Class<E> elementType()
Возвращает примитивный тип элемента векторов данного вида.
boolean equals(Object obj)
Указывает, идентичен ли этот вид другому объекту.
Vector<E> fromArray(Object a, int offset)
Возвращает вектор данного вида, где элементы разрядов инициализируются из данного массива по заданному смещению.
Vector<E> fromMemorySegment(MemorySegmentPREVIEW ms, long offset, ByteOrder bo)
Загружает вектор данного вида из сегмента памятиПРЕДПРОСМОТР, начиная со смещения в сегменте памяти.
int hashCode()
Возвращает значение хэш-кода для вида на основе формы и типа элемента вектора.
VectorMask<E> indexInRange(int offset, int limit)
Возвращает маску данного вида, где установлены только разряды с индексом N, такие что откорректированный индекс N+offset находится в диапазоне [0..limit-1].
VectorMask<E> indexInRange(long offset, long limit)
Возвращает маску данного вида, где установлены только разряды с индексом N, такие что откорректированный индекс N+offset находится в диапазоне [0..limit-1].
VectorShuffle<E> iotaShuffle(int start, int step, boolean wrap)
Создаёт сдвиг, используя исходные индексы, установленные в последовательные значения, начиная с start и с шагом, заданным step.
int length()
Возвращает количество разрядов в векторе этого вида.
VectorMask<E> loadMask(boolean[] bits, int offset)
Возвращает маску данного вида, где элементы разрядов инициализируются из данного массива по заданному смещению.
int loopBound(int length)
Функция управления циклом, которая возвращает наибольшее кратное VLENGTH , которое меньше или равно заданному значению length.
long loopBound(long length)
Функция управления циклом, которая возвращает наибольшее кратное VLENGTH , которое меньше или равно заданному значению length.
VectorMask<E> maskAll(boolean bit)
Возвращает тип маски вектора для этого вида, где каждый разряд устанавливается или сбрасывается в соответствии с заданным одиночным булевым значением, которое транслируется во все разряды.
Class<? extends VectorMask<E>> maskType()
Возвращает тип маски вектора для данного вида.
static <E> VectorSpecies<E> of(Class<E> elementType, VectorShape shape)
Находит вид для типа элемента и формы.
static <E> VectorSpecies<E> ofLargestShape(Class<E> etype)
Находит наибольший вид вектора данного типа элемента.
static <E> VectorSpecies<E> ofPreferred(Class<E> etype)
Находит вид, предпочтительный для текущей платформы, для данного типа элемента вектора.
int partLimit(VectorSpecies<?> outputSpecies, boolean lanewise)
Принимая во внимание этот вид и второй, сообщает о чистом расширении или сокращении (возможно) изменяющей размер переинтерпретации преобразования или lane-wise conversion от этого вида ко второму.
VectorShuffle<E> shuffleFromArray(int[] sourceIndexes, int offset)
Создаёт сдвиг для данного вида из массива int, начиная со смещения.
VectorShuffle<E> shuffleFromOp(IntUnaryOperator fn)
Создаёт сдвиг для данного вида из последовательных значений оператора, применённых к диапазону [0..VLENGTH-1].
VectorShuffle<E> shuffleFromValues(int... sourceIndexes)
Создаёт сдвиг для данного вида из ряда исходных индексов.
String toString()
Возвращает строку вида "Species[ETYPE, VLENGTH, SHAPE]", где ETYPE - примитивный тип элемента, VLENGTH - количество разрядов вектора, связанных со видом, а SHAPE - форма вектора, связанная со видом.
int vectorBitSize()
Возвращает общий размер вектора в битах любого вектора этого вида.
int vectorByteSize()
Возвращает общий размер вектора в байтах любого вектора этого вида.
VectorShape vectorShape()
Возвращает форму векторов, генерируемых этим видом.
Class<? extends Vector<E>> vectorType()
Возвращает тип вектора данного вида.
<F> VectorSpecies<F> withLanes(Class<F> newType)
Находит вид с заданным типом элемента и той же формой, что и этот вид.
VectorSpecies<E> withShape(VectorShape newShape)
Находит вид с заданной формой и тем же типом элемента, что и этот вид.
Vector<E> zero()
Возвращает вектор этого вида, где все элементы разряда установлены в значение по умолчанию, (ETYPE)0.

Подробное описание методов

elementType

Class<E> elementType()
Возвращает примитивный тип элемента векторов этого вида.
Возвращает:
примитивный тип элемента (ETYPE)
См. также:
  • Class.arrayType()

vectorType

Class<? extends Vector<E>> vectorType()
Возвращает тип вектора этого вида. Вектор принадлежит этому виду, если и только если он имеет соответствующий тип.
Возвращает:
тип вектора этого вида

maskType

Class<? extends VectorMask<E>> maskType()
Возвращает тип маски вектора для этого вида.
Возвращает:
тип маски

elementSize

int elementSize()
Возвращает размер дорожки в битах векторов этого вида.
Возвращает:
размер элемента в битах

vectorShape

VectorShape vectorShape()
Возвращает форму векторов, производимых этим видом.
Возвращает:
форму любых векторов этого вида

length

int length()
Возвращает количество дорожек в векторе этого вида.
Примечание API:
Это также количество дорожек в маске или перемещении, связанных с вектором этого вида.
Возвращает:
количество дорожек вектора

vectorBitSize

int vectorBitSize()
Возвращает общий размер вектора в битах любого вектора этого вида. Это то же значение, что и this.vectorShape().vectorBitSize().
Примечание API:
Этот размер может отличаться от размера маски или перемещения этого вида в битах.
Возвращает:
общий размер вектора в битах

vectorByteSize

int vectorByteSize()
Возвращает общий размер вектора в байтах любого вектора этого вида. Это то же значение, что и this.vectorShape().vectorBitSize() / Byte.SIZE.
Примечание API:
Этот размер может отличаться от размера маски или перемещения этого вида в битах.
Возвращает:
общий размер вектора в байтах

loopBound

int loopBound(int length)
Функция управления циклом, которая возвращает наибольшее кратное VLENGTH, которое меньше или равно заданному значению length. Здесь VLENGTH - результат this.length(), а length интерпретируется как количество дорожек. Результирующее значение R удовлетворяет этому неравенству:
R <= length < R+VLENGTH
 
.

Конкретно, этот метод вычисляет length - floorMod(length, VLENGTH), где floorMod вычисляет остаток от деления, округляя частное к отрицательной бесконечности. Пока VLENGTH является степенью двойки, результат также равен length & ~(VLENGTH - 1).

Параметры:
length - входная длина
Возвращает:
наибольшее кратное длине вектора, не больше заданной длины
Исключение:
IllegalArgumentException - если length отрицательно, а результат переполнит положительное значение
См. также:
  • Math.floorMod(int, int)

loopBound

long loopBound(long length)
Функция управления циклом, которая возвращает наибольшее кратное VLENGTH, которое меньше или равно заданному значению length. Здесь VLENGTH - результат this.length(), а length интерпретируется как количество дорожек. Результирующее значение R удовлетворяет этому неравенству:
R <= length < R+VLENGTH
 
.

Конкретно, этот метод вычисляет length - floorMod(length, VLENGTH), где floorMod вычисляет остаток от деления, округляя частное к отрицательной бесконечности. Пока VLENGTH является степенью двойки, результат также равен length & ~(VLENGTH - 1).

Параметры:
length - входная длина
Возвращает:
наибольшее кратное длине вектора, не больше заданной длины
Исключение:
IllegalArgumentException - если length отрицательно, а результат переполнит положительное значение
С тех пор:
19
См. также:
  • Math.floorMod(long, int)

indexInRange

VectorMask<E> indexInRange(int offset, int limit)
Возвращает маску этого вида, где установлены только дорожки с индексом N, такие что скорректированный индекс N+offset находится в диапазоне [0..limit-1].

Этот метод возвращает значение выражения maskAll(true).indexInRange(offset, limit)

Параметры:
offset - начальный индекс
limit - верхняя граница (исключая) диапазона индексов
Возвращает:
маска с не установлеными дорожками за пределами диапазона
См. также:
  • VectorMask.indexInRange(int, int)

indexInRange

VectorMask<E> indexInRange(long offset, long limit)
Возвращает маску этого вида, где установлены только дорожки с индексом N, такие что скорректированный индекс N+offset находится в диапазоне [0..limit-1].

Этот метод возвращает значение выражения maskAll(true).indexInRange(offset, limit)

Параметры:
offset - начальный индекс
limit - верхняя граница (исключая) диапазона индексов
Возвращает:
маска с не установлеными дорожками за пределами диапазона
С тех пор:
19
См. также:
  • VectorMask.indexInRange(long, long)

check

<F> VectorSpecies<F> check(Class<F> elementType)
Проверяет, что у этого вида есть указанный тип элемента, и возвращает этот вид без изменений. Эффект похож на этот псевдокод:
<F> VectorSpecies<F> check(Class<F> elementType)
.
Параметры типа:
F - упакованный тип элемента требуемого типа дорожки
Параметры:
elementType - требуемый тип дорожки
Возвращает:
тот же вид
Исключение:
ClassCastException - если у вида неверный тип элемента
См. также:
  • Vector.check(Class)
  • Vector.check(VectorSpecies)

partLimit

int partLimit(VectorSpecies<?> outputSpecies, boolean lanewise)
Учитывая этот вид и второй, сообщает о чистом расширении или сокращении (возможно, изменяющего размер) преобразования переинтерпретации reinterpretation cast или lane-wise conversion от этого вида ко второму. Знак и величина возвращаемого значения зависят от разницы размеров предлагаемой входной и выходной форм, и (необязательно, если lanewise равно true) также от разницы размеров предлагаемой входной и выходной дорожек.
  • Сначала определяется логический размер результата. Если lanewise равно false, этот размер равен размеру входного VSHAPE. Если lanewise равно true, логический размер результата равен произведению входного VLENGTH на размер выходной ETYPE.
  • Затем логический размер результата сравнивается с размером предлагаемой выходной формы, чтобы увидеть, как он впишется.
  • Если логический результат точно помещается в выходную форму, возвращаемое значение равно нулю, что означает отсутствие чистого расширения или сокращения.
  • Если логический результат переполнит выходную форму, возвращаемое значение является отношением (больше единицы) логического размера результата к (меньшему) размеру выхода. Это отношение можно рассматривать как меру доли «упавших битов входных данных», которые необходимо удалить из входа, чтобы результат поместился в выходной вектор. Это также предел части, верхняя граница (исключительно) параметра part к методу, который бы преобразовал вид входных данных в вид выходных данных.
  • Если логический результат поместится в выходную форму с избытком места, возвращаемое значение является отрицательным числом, модуль которого равен отношению (больше единицы) размера выхода к (меньшему) логическому размеру результата. Это отношение можно рассматривать как меру доли «дополнительных битов заполнения», которые необходимо добавить к логическому результату, чтобы заполнить выходной вектор. Это также предел части, нижняя граница (исключая) параметра part к методу, который бы преобразовал вид входных данных в вид выходных данных.
Параметры:
outputSpecies - предлагаемый вид выходных данных
lanewise - учитывать ли размеры дорожек
Возвращает:
указание на изменение размера как значащее отношение или ноль
См. также:
  • Vector.reinterpretShape(VectorSpecies,int)
  • Vector.convertShape(VectorOperators.Conversion,VectorSpecies,int)

сLanes

<F> VectorSpecies<F> withLanes(Class<F> newType)
Находит вид с заданным типом элемента и такой же формой, как у этого вида. Возвращает то же значение, что и VectorSpecies.of(newType, this.vectorShape()).
Type Parameters:
F - упакованный тип элемента
Parameters:
newType - новый тип элемента
Returns:
вид для нового типа элемента и такой же формы
Throws:
IllegalArgumentException - если такой вид для данного сочетания типа элемента и формы не существует или заданный тип не является допустимым ETYPE
See Also:
  • withShape(VectorShape)
  • of(Class, VectorShape)

сShape

VectorSpecies<E> withShape(VectorShape newShape)
Находит вид с заданной формой и тем же elementType, что и у этого вида. Возвращает то же значение, что и VectorSpecies.of(this.elementType(), newShape).
Parameters:
newShape - новая форма
Returns:
вид для того же типа элемента и новой формы
Throws:
IllegalArgumentException - если такой вид для данного сочетания типа элемента и формы не существует
See Also:
  • withLanes(Class)
  • of(Class, VectorShape)

of

static <E> VectorSpecies<E> of(Class<E> elementType, VectorShape shape)
Находит вид для типа элемента и формы.
Type Parameters:
E - упакованный тип элемента
Parameters:
elementType - тип элемента
shape - форма
Returns:
вид для заданного типа элемента и формы
Throws:
IllegalArgumentException - если такой вид для данного сочетания типа элемента и формы не существует или заданный тип не является допустимым ETYPE
See Also:
  • withLanes(Class)
  • withShape(VectorShape)

ofLargestShape

static <E> VectorSpecies<E> ofLargestShape(Class<E> etype)
Находит вид самого большого вектора заданного типа элемента.

Возвращаемый вид выбирается платформой, которая имеет форму с максимально возможным размером в битах для данного типа элемента. Базовая форма вектора на некоторых платформах может не поддерживать другие типы полос, что может ограничить применимость преобразований переинтерпретации. Векторные алгоритмы, которые требуют преобразований переинтерпретации, будут более переносимыми, если они используют предпочтительный вид платформы.

Type Parameters:
E - упакованный тип элемента
Parameters:
etype - тип элемента
Returns:
предпочтительный вид для типа элемента
Throws:
IllegalArgumentException - если такой вид для типа элемента не существует или заданный тип не является допустимым ETYPE
See Also:
  • ofPreferred(Class)

ofPreferred

static <E> VectorSpecies<E> ofPreferred(Class<E> etype)
Находит вид, предпочтительный для текущей платформы, для заданного типа вектора. Это то же значение, что и VectorSpecies.of(etype, VectorShape.preferredShape()).

Этот вид выбирается платформой так, чтобы он имел наибольшую возможную форму, которая поддерживает все типы элементов полос. Это имеет следующие последствия:

  • Различные предпочтительные виды для разных типов элементов будут иметь одинаковую базовую форму.
  • Все векторы, созданные из предпочтительных видов, будут иметь общий размер в битах и емкость информации.
  • Преобразования переинтерпретации между векторами предпочтительных видов не будут ни обрезать полосы, ни заполнять их значениями по умолчанию.
  • Для любого конкретного типа элемента платформа может предоставить большую форму вектора, которая (в качестве компромисса) не поддерживает все возможные типы элементов.
Implementation Note:
На многих платформах нет поведенческих различий между ofLargestShape и ofPreferred, потому что предпочтительная форма обычно также является самой большой доступной формой для каждого типа полос. Поэтому большинство векторных алгоритмов будут работать хорошо без ofLargestShape.
Type Parameters:
E - упакованный тип элемента
Parameters:
etype - тип элемента
Returns:
предпочтительный вид для этого типа элемента
Throws:
IllegalArgumentException - если такой вид для типа элемента не существует или заданный тип не является допустимым ETYPE
See Also:
  • Vector.reinterpretShape(VectorSpecies,int)
  • VectorShape.preferredShape()
  • ofLargestShape(Class)

elementSize

static int elementSize(Class<?> elementType)
Возвращает размер в битах заданного типа элемента вектора (ETYPE). Тип элемента должен быть допустимым ETYPE, а не типом-обёрткой или другим типом объекта. Аргумент типа элемента должен быть зеркалом для допустимого вектора ETYPE, такого как byte.class, int.class, или double.class. Размер в битах такого типа — это константа SIZE для соответствующего класса-обёртки, такого как Byte.SIZE, или Integer.SIZE, или Double.SIZE.
Parameters:
elementType - тип элемента вектора (базовый тип)
Returns:
размер в битах elementType, например 32 для int.class
Throws:
IllegalArgumentException - если заданный аргумент elementType не является допустимым типом вектора ETYPE

zero

Vector<E> zero()
Возвращает вектор этого вида, где все элементы полос установлены в значение по умолчанию для примитивного типа, (ETYPE)0. Эквивалентно IntVector.zero(this) или эквивалентному методу zero для типа вектора, соответствующего этому виду.
Returns:
вектор нулей заданного вида
See Also:
  • IntVector.zero(VectorSpecies)
  • FloatVector.zero(VectorSpecies)

fromArray

Vector<E> fromArray(Object a, int offset)
Возвращает вектор этого вида, где элементы полос инициализируются из заданного массива по заданному смещению. Массив должен быть правильного ETYPE. Эквивалентно IntVector.fromArray(this,a,offset) или эквивалентному методу fromArray для типа вектора, соответствующего этому виду.
Parameters:
a - массив ETYPE для этого вида
offset - индекс первого значения полосы для загрузки
Returns:
вектор заданного вида, заполненный из массива
Throws:
IndexOutOfBoundsException - если offset+N < 0 или offset+N >= a.length для любой полосы N в векторе
See Also:
  • IntVector.fromArray(VectorSpecies,int[],int)
  • FloatVector.fromArray(VectorSpecies,float[],int)

fromMemorySegment

Vector<E> fromMemorySegment(MemorySegmentPREVIEW ms, long offset, ByteOrder bo)
Загружает вектор этого вида из сегмента памятиПРЕВЬЮ, начиная со смещения в сегменте памяти. Байты объединяются в примитивные элементы полос в соответствии с указанным порядком байтов. Вектор упорядочивается в полосы в соответствии с порядком памяти.

Эквивалентно IntVector.fromMemorySegment(this,ms,offset,bo), для типа вектора, соответствующего этому виду.

Parameters:
ms - сегмент памяти
offset - смещение в сегменте памяти
bo - желаемый порядок байтов
Returns:
вектор заданного вида, заполненный из сегмента памяти
Throws:
IndexOutOfBoundsException - если offset+N*ESIZE < 0 или offset+(N+1)*ESIZE > a.length для любой полосы N в векторе
Since:
19
See Also:
  • IntVector.fromMemorySegment(VectorSpecies, java.lang.foreign.MemorySegment, long, java.nio.ByteOrder)ПРЕВЬЮ
  • FloatVector.fromMemorySegment(VectorSpecies, java.lang.foreign.MemorySegment, long, java.nio.ByteOrder)ПРЕВЬЮ

loadMask

VectorMask<E> loadMask(boolean[] bits, int offset)
Возвращает маску этого вида, где элементы полос инициализируются из данного массива в заданном смещении. Эквивалентно VectorMask.fromArray(this,a,offset).
Параметры:
bits - массив boolean
offset - смещение в массиве
Возвращает:
маску, загруженную из массива boolean
Исключения:
IndexOutOfBoundsException - если offset+N < 0 или offset+N >= a.length для любой полосы N в векторной маске
См. также:
  • VectorMask.fromArray(VectorSpecies,boolean[],int)

maskAll

VectorMask<E> maskAll(boolean bit)
Возвращает маску этого вида, где каждая полоса устанавливается или сбрасывается в соответствии с заданным одиночным boolean, который транслируется во все полосы.
Параметры:
bit - заданный бит маски для дублирования
Возвращает:
маску, где каждая полоса устанавливается или сбрасывается в соответствии с заданным битом
См. также:
  • Vector.maskAll(boolean)

broadcast

Vector<E> broadcast(long e)
Возвращает вектор данного вида, где все элементы полос установлены в примитивное значение e.

Этот метод возвращает значение этого выражения: EVector.broadcast(this, (ETYPE)e), где EVector — класс вектора, специфичный для ETYPE этого вида. Значение long должно быть точно представимо ETYPE, чтобы e==(long)(ETYPE)e.

Параметры:
e - значение для трансляции
Возвращает:
вектор, где все элементы полос установлены в примитивное значение e
Исключения:
IllegalArgumentException - если данное значение long не может быть представлено видом вектора ETYPE
См. также:
  • Vector.broadcast(long)
  • checkValue(long)

checkValue

long checkValue(long e)
Проверяет, может ли этот вид представить данное значение элемента, и возвращает значение без изменений. Значение long должно быть точно представимо ETYPE вида вектора, чтобы e==(long)(ETYPE)e. Эффект похож на этот псевдокод: e == (long)(ETYPE)e ? e : throw new IllegalArgumentException().
Параметры:
e - проверяемое значение
Возвращает:
e
Исключения:
IllegalArgumentException - если заданное значение long не может быть представлено видом вектора ETYPE
См. также:
  • broadcast(long)

shuffleFromValues

VectorShuffle<E> shuffleFromValues(int... sourceIndexes)
Создаёт сдвиг для этого вида из серии индексов источников.

Для каждой полосы сдвига, где N — индекс полосы сдвига, значение N-го индекса проверяется относительно вида VLENGTH, и (если недействительно) частично оборачивается в исключительный индекс в диапазоне [-VLENGTH..-1].

Параметры:
sourceIndexes - индексы источников, из которых будет черпать сдвиг
Возвращает:
сдвиг, где индекс источника каждой полосы установлен на заданное значение int, частично оборачиваемый, если исключительный
Исключения:
IndexOutOfBoundsException - если sourceIndexes.length != VLENGTH
См. также:
  • VectorShuffle.fromValues(VectorSpecies,int...)

shuffleFromArray

VectorShuffle<E> shuffleFromArray(int[] sourceIndexes, int offset)
Создаёт сдвиг для этого вида из массива int начиная со смещения.

Для каждой полосы сдвига, где N — индекс полосы сдвига, элемент массива с индексом i + N проверяется относительно вида VLENGTH, и (если недействителен) частично оборачивается в исключительный индекс в диапазоне [-VLENGTH..-1].

Параметры:
sourceIndexes - индексы источников, из которых будет черпать сдвиг
offset - смещение в массиве
Возвращает:
сдвиг, где индекс источника каждой полосы установлен на заданное значение int, частично оборачиваемый, если исключительный
Исключения:
IndexOutOfBoundsException - если offset < 0, или offset > sourceIndexes.length - VLENGTH
См. также:
  • VectorShuffle.fromArray(VectorSpecies,int[],int)

shuffleFromOp

VectorShuffle<E> shuffleFromOp(IntUnaryOperator fn)
Создаёт сдвиг для этого вида из последовательных значений оператора, применённого к диапазону [0..VLENGTH-1].

Для каждой полосы сдвига, где N — индекс полосы сдвига, значение N-го индекса проверяется относительно вида VLENGTH, и (если недействителен) частично оборачивается в исключительный индекс в диапазоне [-VLENGTH..-1].

Следует соблюдать осторожность, чтобы гарантировать, что значения VectorShuffle , создаваемые этим методом, потреблялись как константы для обеспечения оптимального кода. Например, значения сдвига могут храниться в полях static final или инвариантных переменных цикла.

Этот метод работает так, как будто сдвиг создаётся из массива отображённых индексов следующим образом:


   int[] a = new int[VLENGTH];
   for (int i = 0; i < a.length; i++) {
       a[i] = fn.applyAsInt(i);
   }
   return VectorShuffle.fromArray(this, a, 0);
 
Параметры:
fn - функция отображения индекса полосы
Возвращает:
сдвиг отображённых индексов
См. также:
  • VectorShuffle.fromOp(VectorSpecies,IntUnaryOperator)

iotaShuffle

VectorShuffle<E> iotaShuffle(int start, int step, boolean wrap)
Создаёт сдвиг, используя индексы источников, установленные в последовательные значения, начиная с start и шагом заданного step.

Этот метод возвращает значение выражения VectorSpecies.shuffleFromOp(i -> R(start + i * step)), где R — wrapIndex, если wrap истинно, и это тождественная функция в противном случае.

Если wrap ложно, каждый индекс проверяется относительно вида VLENGTH, и (если недействителен) частично оборачивается в исключительный индекс в диапазоне [-VLENGTH..-1]. В противном случае, если wrap истинно, также уменьшите каждый индекс, как будто с помощью wrapIndex, до допустимого диапазона [0..VLENGTH-1].

Замечание API:
Параметр wrap должен быть установлен в true если недействительные индексы источников должны быть обернуты. В противном случае, установив его в false позволяет проверять недействительные индексы источников в дальнейшем, например, с помощью unary rearrange.
Параметры:
start - начальное значение последовательности индексов источника, обычно 0
step - разница между смежными индексами источника, обычно 1
wrap - указывает, обернуть ли полученные индексы по модулю VLENGTH
Возвращает:
сдвиг последовательных индексов полосы
См. также:
  • VectorShuffle.iota(VectorSpecies,int,int,boolean)

toString

String toString()
Возвращает строку в формате "Species[ETYPE, VLENGTH, SHAPE]", где ETYPE — примитивный тип полосы, VLENGTH — количество полос вектора, связанное с видом, и SHAPE — форма вектора, связанная с видом.
Переопределяет:
toString в классе Object
Возвращает:
строка в формате "Species[ETYPE, VLENGTH, SHAPE]"

equals

boolean equals(Object obj)
Указывает, идентичен ли этот вид какому-либо другому объекту. Два вида идентичны только в том случае, если они имеют одинаковую форму и одинаковый тип элемента.
Переопределяет:
equals в классе Object
Параметры:
obj - объект-ссылка для сравнения.
Возвращает:
является ли этот вид идентичным какому-либо другому объекту
См. также:
  • Object.hashCode()
  • HashMap

hashCode

int hashCode()
Возвращает значение хэша для вида, основанное на форме вектора и типе элемента.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хэша для этого вида
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

© 1993, 2023, 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/21/docs/api/jdk.incubator.vector/jdk/incubator/vector/VectorSpecies.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API