Method: Vdsp::UnsafeDouble.vasm

Defined in:
ext/vdsp/vdsp.c

.vasm(a, a_offset, a_stride, b, b_offset, b_stride, c, d, d_offset, d_stride, n) ⇒ Object

d = (a + b) * c



1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
# File 'ext/vdsp/vdsp.c', line 1583

VALUE rb_double_vasm(
  VALUE cls,
  VALUE a, VALUE a_offset, VALUE a_stride,
  VALUE b, VALUE b_offset, VALUE b_stride,
  VALUE c,
  VALUE d, VALUE d_offset, VALUE d_stride,
  VALUE n)
{
  VdspArrayParam _a;
  VdspArrayParam _b;
  VdspArrayParam _d;

  array_param(&_a, a, a_offset, a_stride);
  array_param(&_b, b, b_offset, b_stride);
  double _c = NUM2DBL(c); 
  array_param(&_d, d, d_offset, d_stride);

  vDSP_Length _n = NUM2LONG(n);

  vDSP_vasmD(
    _a.res0->v.d+_a.offset, _a.stride,
    _b.res0->v.d+_b.offset, _b.stride,
    &_c,
    _d.res0->v.d+_d.offset, _d.stride,
    _n);

  return d;
}