Vector.fromSimdList constructor

Vector.fromSimdList(
  1. List source,
  2. int actualLength, {
  3. DType dtype = DType.float32,
})

Creates a vector from a simd-typed collection. It accepts only Float32x4List or Float64x2List lists as a source.

A usage example:

import 'dart:typed_data';
import 'package:ml_linalg/vector.dart';

final source1 = Float64x2List.fromList([1, 2, 3, 4, 5]);
final source2 = Float32x4List.fromList([1, 2, 3, 4, 5]);

final vector1 = Vector.fromSimdList(source1, dtype: DType.float64);
final vector2 = Vector.fromSimdList(source2, dtype: DType.float32);

print(vector1);
print(vector2);

the output will be like that:

(1.0, 2.0, 3.0, 4.0, 5.0)
(1.0, 2.0, 3.0, 4.0, 5.0)

Implementation

factory Vector.fromSimdList(
  List source,
  int actualLength, {
  DType dtype = DType.float32,
}) {
  switch (dtype) {
    case DType.float32:
      return Float32x4Vector.fromSimdList(
        source as Float32x4List,
        actualLength,
        CacheManagerFactoryImpl().create(vectorCacheKeys),
        const Float32x4Helper(),
      );

    case DType.float64:
      return Float64x2Vector.fromSimdList(
        source as Float64x2List,
        actualLength,
        CacheManagerFactoryImpl().create(vectorCacheKeys),
        const Float64x2Helper(),
      );

    default:
      throw UnimplementedError(
          'Vector of $dtype type is not implemented yet');
  }
}