|
541 | 541 | # fma # |
542 | 542 | #-----# |
543 | 543 |
|
544 | | -@inline function calc_fma_xyz(x::Dual{T,V,N}, |
545 | | - y::Dual{T,V,N}, |
546 | | - z::Dual{T,V,N}) where {T, V<:SIMDFloat,N} |
547 | | - xv, yv, zv = value(x), value(y), value(z) |
548 | | - rv = fma(xv, yv, zv) |
549 | | - N == 0 && return Dual{T}(rv) |
550 | | - xp, yp, zp = Vec(partials(x).values), Vec(partials(y).values), Vec(partials(z).values) |
551 | | - parts = Tuple(fma(xv, yp, fma(yv, xp, zp))) |
552 | | - Dual{T}(rv, parts) |
553 | | -end |
554 | 544 | @generated function calc_fma_xyz(x::Dual{T,<:Any,N}, |
555 | 545 | y::Dual{T,<:Any,N}, |
556 | 546 | z::Dual{T,<:Any,N}) where {T,N} |
|
593 | 583 | # muladd # |
594 | 584 | #--------# |
595 | 585 |
|
596 | | -@inline function calc_muladd_xyz(x::Dual{T,V,N}, |
597 | | - y::Dual{T,V,N}, |
598 | | - z::Dual{T,V,N}) where {T, V<:SIMDType,N} |
599 | | - xv, yv, zv = value(x), value(y), value(z) |
600 | | - rv = muladd(xv, yv, zv) |
601 | | - N == 0 && return Dual{T}(rv) |
602 | | - xp, yp, zp = Vec(partials(x).values), Vec(partials(y).values), Vec(partials(z).values) |
603 | | - parts = Tuple(muladd(xv, yp, muladd(yv, xp, zp))) |
604 | | - Dual{T}(rv, parts) |
605 | | -end |
606 | 586 | @generated function calc_muladd_xyz(x::Dual{T,<:Any,N}, |
607 | 587 | y::Dual{T,<:Any,N}, |
608 | 588 | z::Dual{T,<:Any,N}) where {T,N} |
|
0 commit comments