@@ -128,9 +128,8 @@ public static Vector128<T> Invoke(Vector128<T> x, Vector128<T> y, Vector128<T> z
128
128
{
129
129
return Vector128 . MultiplyAddEstimate ( x . AsDouble ( ) , y . AsDouble ( ) , z . AsDouble ( ) ) . As < double , T > ( ) ;
130
130
}
131
- else
131
+ else if ( typeof ( T ) == typeof ( float ) )
132
132
{
133
- Debug . Assert ( typeof ( T ) == typeof ( float ) ) ;
134
133
return Vector128 . MultiplyAddEstimate ( x . AsSingle ( ) , y . AsSingle ( ) , z . AsSingle ( ) ) . As < float , T > ( ) ;
135
134
}
136
135
#else
@@ -149,9 +148,9 @@ public static Vector128<T> Invoke(Vector128<T> x, Vector128<T> y, Vector128<T> z
149
148
{
150
149
if ( typeof ( T ) == typeof ( double ) ) return AdvSimd . Arm64 . FusedMultiplyAdd ( z . AsDouble ( ) , x . AsDouble ( ) , y . AsDouble ( ) ) . As < double , T > ( ) ;
151
150
}
151
+ #endif
152
152
153
153
return ( x * y ) + z ;
154
- #endif
155
154
}
156
155
157
156
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
@@ -162,9 +161,8 @@ public static Vector256<T> Invoke(Vector256<T> x, Vector256<T> y, Vector256<T> z
162
161
{
163
162
return Vector256 . MultiplyAddEstimate ( x . AsDouble ( ) , y . AsDouble ( ) , z . AsDouble ( ) ) . As < double , T > ( ) ;
164
163
}
165
- else
164
+ else if ( typeof ( T ) == typeof ( float ) )
166
165
{
167
- Debug . Assert ( typeof ( T ) == typeof ( float ) ) ;
168
166
return Vector256 . MultiplyAddEstimate ( x . AsSingle ( ) , y . AsSingle ( ) , z . AsSingle ( ) ) . As < float , T > ( ) ;
169
167
}
170
168
#else
@@ -173,9 +171,9 @@ public static Vector256<T> Invoke(Vector256<T> x, Vector256<T> y, Vector256<T> z
173
171
if ( typeof ( T ) == typeof ( float ) ) return Fma . MultiplyAdd ( x . AsSingle ( ) , y . AsSingle ( ) , z . AsSingle ( ) ) . As < float , T > ( ) ;
174
172
if ( typeof ( T ) == typeof ( double ) ) return Fma . MultiplyAdd ( x . AsDouble ( ) , y . AsDouble ( ) , z . AsDouble ( ) ) . As < double , T > ( ) ;
175
173
}
174
+ #endif
176
175
177
176
return ( x * y ) + z ;
178
- #endif
179
177
}
180
178
181
179
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
@@ -186,9 +184,8 @@ public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z
186
184
{
187
185
return Vector512 . MultiplyAddEstimate ( x . AsDouble ( ) , y . AsDouble ( ) , z . AsDouble ( ) ) . As < double , T > ( ) ;
188
186
}
189
- else
187
+ else if ( typeof ( T ) == typeof ( float ) )
190
188
{
191
- Debug . Assert ( typeof ( T ) == typeof ( float ) ) ;
192
189
return Vector512 . MultiplyAddEstimate ( x . AsSingle ( ) , y . AsSingle ( ) , z . AsSingle ( ) ) . As < float , T > ( ) ;
193
190
}
194
191
#else
@@ -197,9 +194,9 @@ public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z
197
194
if ( typeof ( T ) == typeof ( float ) ) return Avx512F . FusedMultiplyAdd ( x . AsSingle ( ) , y . AsSingle ( ) , z . AsSingle ( ) ) . As < float , T > ( ) ;
198
195
if ( typeof ( T ) == typeof ( double ) ) return Avx512F . FusedMultiplyAdd ( x . AsDouble ( ) , y . AsDouble ( ) , z . AsDouble ( ) ) . As < double , T > ( ) ;
199
196
}
197
+ #endif
200
198
201
199
return ( x * y ) + z ;
202
- #endif
203
200
}
204
201
}
205
202
}
0 commit comments