|
742 | 742 | end |
743 | 743 |
|
744 | 744 | @inline function sinpi_kernel(x::Float16) |
745 | | - _sinpi_kernel_polynomial_f16(x) |
| 745 | + Float16(sinpi_kernel_wide(x)) |
746 | 746 | end |
747 | 747 | @inline function sinpi_kernel_wide(x::Float16) |
748 | 748 | x = Float32(x) |
|
765 | 765 | -1.3352624040152927, 0.23531426791507182, -0.02550710082498761)) |
766 | 766 | end |
767 | 767 | @inline function cospi_kernel(x::Float16) |
768 | | - _cospi_kernel_polynomial_f16(x) |
| 768 | + Float16(cospi_kernel_wide(x)) |
769 | 769 | end |
770 | 770 | @inline function cospi_kernel_wide(x::Float16) |
771 | 771 | x = Float32(x) |
|
844 | 844 |
|
845 | 845 | Constrain the zeroth coefficient to `1` to achieve exact behavior for zero input. |
846 | 846 |
|
847 | | -* `Float16`: |
848 | | -
|
849 | | - ```sollya |
850 | | - handTuned = 1; |
851 | | - prec = 500!; |
852 | | - accurate = cos(pi * x); |
853 | | - kernelDomain = [-2^-3, 2^-2]; |
854 | | - constrainedPart = 1; |
855 | | - machinePrecision = 11; |
856 | | - doubleWordPrecision = 2 * machinePrecision + handTuned; |
857 | | - freeMonomials = [|2, 4|]; |
858 | | - freeMonomialPrecisions = [|doubleWordPrecision, machinePrecision|]; |
859 | | - polynomial = fpminimax(accurate, freeMonomials, freeMonomialPrecisions, kernelDomain, constrainedPart); |
860 | | - supnormPrecision = 2^-10; |
861 | | - sup(supnorm(polynomial, accurate, kernelDomain, relative, supnormPrecision)); |
862 | | - polynomial; |
863 | | - ``` |
864 | | -
|
865 | 847 | * `Float32`: |
866 | 848 |
|
867 | 849 | ```sollya |
@@ -900,23 +882,6 @@ Constrain the zeroth coefficient to `1` to achieve exact behavior for zero input |
900 | 882 |
|
901 | 883 | ## `sinpi` |
902 | 884 |
|
903 | | -* `Float16`: |
904 | | -
|
905 | | - ```sollya |
906 | | - handTuned = 3; |
907 | | - prec = 500!; |
908 | | - accurate = sin(pi * x); |
909 | | - kernelDomain = [-2^-3, 2^-2]; |
910 | | - machinePrecision = 11; |
911 | | - doubleWordPrecision = 2 * machinePrecision + handTuned; |
912 | | - freeMonomials = [|1, 3, 5|]; |
913 | | - freeMonomialPrecisions = [|doubleWordPrecision, machinePrecision, machinePrecision|]; |
914 | | - polynomial = fpminimax(accurate, freeMonomials, freeMonomialPrecisions, kernelDomain); |
915 | | - supnormPrecision = 2^-10; |
916 | | - sup(supnorm(polynomial, accurate, kernelDomain, relative, supnormPrecision)); |
917 | | - polynomial; |
918 | | - ``` |
919 | | -
|
920 | 885 | * `Float32`: |
921 | 886 |
|
922 | 887 | ```sollya |
@@ -952,20 +917,6 @@ Constrain the zeroth coefficient to `1` to achieve exact behavior for zero input |
952 | 917 | ``` |
953 | 918 | =# |
954 | 919 |
|
955 | | -const _cospi_kernel_polynomial_f16 = CosPiEvaluationScheme(; |
956 | | - c₀ = Float16(1), |
957 | | - c₂ = (Float16(-4.934), Float16(0.001134)), |
958 | | - rest = ( |
959 | | - Float16(3.941), |
960 | | - ), |
961 | | -) |
962 | | -const _sinpi_kernel_polynomial_f16 = SinPiEvaluationScheme(; |
963 | | - c₁ = (Float16(3.14), Float16(0.0009737)), |
964 | | - rest = ( |
965 | | - Float16(-5.168), |
966 | | - Float16(2.52), |
967 | | - ), |
968 | | -) |
969 | 920 | const _cospi_kernel_polynomial_f32 = CosPiEvaluationScheme(; |
970 | 921 | c₀ = Float32(1), |
971 | 922 | c₂ = (-4.934802f0, -1.1607644f-7), |
|
0 commit comments