summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx139
1 files changed, 70 insertions, 69 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index aa85f1584f5..bda1371504a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3fp-expo.dtx Copyright (C) 2011-2017 The LaTeX3 Project
+%% File: l3fp-expo.dtx Copyright (C) 2011-2018 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018/03/05}
+% \date{Released 2018-04-30}
%
% \maketitle
%
@@ -176,14 +176,14 @@
\cs_new:Npn \@@_ln_npos_o:w \s_@@ \@@_chk:w 10#1#2#3;
{ %^^A todo: ln(1) should be "exact zero", not "underflow"
\exp_after:wN \@@_sanitize:Nw
- \__int_value:w % for the overall sign
+ \int_value:w % for the overall sign
\if_int_compare:w #1 < 1 \exp_stop_f:
2
\else:
0
\fi:
\exp_after:wN \exp_stop_f:
- \__int_value:w \__int_eval:w % for the exponent
+ \int_value:w \@@_int_eval:w % for the exponent
\@@_ln_significand:NNNNnnnN #2#3
\@@_ln_exponent:wn {#1}
}
@@ -203,11 +203,11 @@
\cs_new:Npn \@@_ln_significand:NNNNnnnN #1#2#3#4
{
\exp_after:wN \@@_ln_x_ii:wnnnn
- \__int_value:w
+ \int_value:w
\if_case:w #1 \exp_stop_f:
\or:
\if_int_compare:w #2 < 4 \exp_stop_f:
- \__int_eval:w 10 - #2
+ \@@_int_eval:w 10 - #2
\else:
6
\fi:
@@ -230,14 +230,14 @@
\cs_new:Npn \@@_ln_x_ii:wnnnn #1; #2#3#4#5
{
\exp_after:wN \@@_ln_div_after:Nw
- \cs:w c_@@_ln_ \__int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end:
- \__int_value:w
+ \cs:w c_@@_ln_ \@@_int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end:
+ \int_value:w
\exp_after:wN \@@_ln_x_iv:wnnnnnnnn
- \__int_value:w \__int_eval:w
+ \int_value:w \@@_int_eval:w
\exp_after:wN \@@_ln_x_iii_var:NNNNNw
- \__int_value:w \__int_eval:w 9999 9990 + #1*#2#3 +
+ \int_value:w \@@_int_eval:w 9999 9990 + #1*#2#3 +
\exp_after:wN \@@_ln_x_iii:NNNNNNw
- \__int_value:w \__int_eval:w 10 0000 0000 + #1*#4#5 ;
+ \int_value:w \@@_int_eval:w 10 0000 0000 + #1*#4#5 ;
{20000} {0000} {0000} {0000}
} %^^A todo: reoptimize (a generalization attempt failed).
\cs_new:Npn \@@_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7;
@@ -280,7 +280,7 @@
% \frac {\left\lfloor 10^8 \cdot A\right\rfloor} {y} - \frac{1}{2}
% \right\rfloor.
% \]
-% (The $1/2$ comes from how e\TeX{} rounds.) As for division, it is
+% (The $1/2$ comes from how \eTeX{} rounds.) As for division, it is
% easy to see that $Q_{1} \leq 10^4 A / Z$, \emph{i.e.}, $Q_{1}$
% is an underestimate.
%
@@ -322,33 +322,33 @@
\cs_new:Npn \@@_ln_x_iv:wnnnnnnnn #1; #2#3#4#5 #6#7#8#9
{
\exp_after:wN \@@_div_significand_pack:NNN
- \__int_value:w \__int_eval:w
+ \int_value:w \@@_int_eval:w
\@@_ln_div_i:w #1 ;
#6 #7 ; {#8} {#9}
{#2} {#3} {#4} {#5}
- { \exp_after:wN \@@_ln_div_ii:wwn \__int_value:w #1 }
- { \exp_after:wN \@@_ln_div_ii:wwn \__int_value:w #1 }
- { \exp_after:wN \@@_ln_div_ii:wwn \__int_value:w #1 }
- { \exp_after:wN \@@_ln_div_ii:wwn \__int_value:w #1 }
- { \exp_after:wN \@@_ln_div_vi:wwn \__int_value:w #1 }
+ { \exp_after:wN \@@_ln_div_ii:wwn \int_value:w #1 }
+ { \exp_after:wN \@@_ln_div_ii:wwn \int_value:w #1 }
+ { \exp_after:wN \@@_ln_div_ii:wwn \int_value:w #1 }
+ { \exp_after:wN \@@_ln_div_ii:wwn \int_value:w #1 }
+ { \exp_after:wN \@@_ln_div_vi:wwn \int_value:w #1 }
}
\cs_new:Npn \@@_ln_div_i:w #1;
{
\exp_after:wN \@@_div_significand_calc:wwnnnnnnn
- \__int_value:w \__int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1
+ \int_value:w \@@_int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1
}
\cs_new:Npn \@@_ln_div_ii:wwn #1; #2;#3 % y; B1;B2 <- for k=1
{
\exp_after:wN \@@_div_significand_pack:NNN
- \__int_value:w \__int_eval:w
+ \int_value:w \@@_int_eval:w
\exp_after:wN \@@_div_significand_calc:wwnnnnnnn
- \__int_value:w \__int_eval:w 999999 + #2 #3 / #1 ; % Q2
+ \int_value:w \@@_int_eval:w 999999 + #2 #3 / #1 ; % Q2
#2 #3 ;
}
\cs_new:Npn \@@_ln_div_vi:wwn #1; #2;#3#4#5 #6#7#8#9 %y;F1;F2F3F4x1x2x3x4
{
\exp_after:wN \@@_div_significand_pack:NNN
- \__int_value:w \__int_eval:w 1000000 + #2 #3 / #1 ; % Q6
+ \int_value:w \@@_int_eval:w 1000000 + #2 #3 / #1 ; % Q6
}
% \end{macrocode}
% We now have essentially
@@ -396,12 +396,12 @@
\exp_after:wN \@@_ln_t_large:NNw
\exp_after:wN + % <sign>
\exp_after:wN #1
- \__int_value:w \__int_eval:w 9999 - #2 \exp_after:wN ;
- \__int_value:w \__int_eval:w 9999 - #3 \exp_after:wN ;
- \__int_value:w \__int_eval:w 9999 - #4 \exp_after:wN ;
- \__int_value:w \__int_eval:w 9999 - #5 \exp_after:wN ;
- \__int_value:w \__int_eval:w 9999 - #6 \exp_after:wN ;
- \__int_value:w \__int_eval:w 1 0000 - #7 ;
+ \int_value:w \@@_int_eval:w 9999 - #2 \exp_after:wN ;
+ \int_value:w \@@_int_eval:w 9999 - #3 \exp_after:wN ;
+ \int_value:w \@@_int_eval:w 9999 - #4 \exp_after:wN ;
+ \int_value:w \@@_int_eval:w 9999 - #5 \exp_after:wN ;
+ \int_value:w \@@_int_eval:w 9999 - #6 \exp_after:wN ;
+ \int_value:w \@@_int_eval:w 1 0000 - #7 ;
}
% \end{macrocode}
%
@@ -418,29 +418,30 @@
\cs_new:Npn \@@_ln_t_large:NNw #1 #2 #3; #4; #5; #6; #7; #8;
{
\exp_after:wN \@@_ln_square_t_after:w
- \__int_value:w \__int_eval:w 9999 0000 + #3*#3
+ \int_value:w \@@_int_eval:w 9999 0000 + #3*#3
\exp_after:wN \@@_ln_square_t_pack:NNNNNw
- \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#4
+ \int_value:w \@@_int_eval:w 9999 0000 + 2*#3*#4
\exp_after:wN \@@_ln_square_t_pack:NNNNNw
- \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#5 + #4*#4
+ \int_value:w \@@_int_eval:w 9999 0000 + 2*#3*#5 + #4*#4
\exp_after:wN \@@_ln_square_t_pack:NNNNNw
- \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#6 + 2*#4*#5
+ \int_value:w \@@_int_eval:w 9999 0000 + 2*#3*#6 + 2*#4*#5
\exp_after:wN \@@_ln_square_t_pack:NNNNNw
- \__int_value:w \__int_eval:w 1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5
+ \int_value:w \@@_int_eval:w
+ 1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5
+ (2*#3*#8 + 2*#4*#7 + 2*#5*#6) / 1 0000
% ; ; ;
\exp_after:wN \@@_ln_twice_t_after:w
- \__int_value:w \__int_eval:w -1 + 2*#3
+ \int_value:w \@@_int_eval:w -1 + 2*#3
\exp_after:wN \@@_ln_twice_t_pack:Nw
- \__int_value:w \__int_eval:w 9999 + 2*#4
+ \int_value:w \@@_int_eval:w 9999 + 2*#4
\exp_after:wN \@@_ln_twice_t_pack:Nw
- \__int_value:w \__int_eval:w 9999 + 2*#5
+ \int_value:w \@@_int_eval:w 9999 + 2*#5
\exp_after:wN \@@_ln_twice_t_pack:Nw
- \__int_value:w \__int_eval:w 9999 + 2*#6
+ \int_value:w \@@_int_eval:w 9999 + 2*#6
\exp_after:wN \@@_ln_twice_t_pack:Nw
- \__int_value:w \__int_eval:w 9999 + 2*#7
+ \int_value:w \@@_int_eval:w 9999 + 2*#7
\exp_after:wN \@@_ln_twice_t_pack:Nw
- \__int_value:w \__int_eval:w 10000 + 2*#8 ; ;
+ \int_value:w \@@_int_eval:w 10000 + 2*#8 ; ;
{ \@@_ln_c:NwNw #1 }
#2
}
@@ -494,7 +495,7 @@
\@@_fixed_mul:wwn #3;
{
\exp_after:wN \@@_ln_Taylor_loop:www
- \__int_value:w \__int_eval:w #1 - 2 ;
+ \int_value:w \@@_int_eval:w #1 - 2 ;
}
#3;
}
@@ -502,7 +503,7 @@
{
\fi:
\exp_after:wN \@@_fixed_mul:wwn
- \exp_after:wN { \__int_value:w \__int_eval:w 10000 + #2 } #3;
+ \exp_after:wN { \int_value:w \@@_int_eval:w 10000 + #2 } #3;
}
% \end{macrocode}
% \end{macro}
@@ -556,16 +557,16 @@
\if_case:w #2 \exp_stop_f:
0 \@@_case_return:nw { \@@_fixed_to_float_o:Nw 2 }
\or:
- \exp_after:wN \@@_ln_exponent_one:ww \__int_value:w
+ \exp_after:wN \@@_ln_exponent_one:ww \int_value:w
\else:
\if_int_compare:w #2 > 0 \exp_stop_f:
\exp_after:wN \@@_ln_exponent_small:NNww
\exp_after:wN 0
- \exp_after:wN \@@_fixed_sub:wwn \__int_value:w
+ \exp_after:wN \@@_fixed_sub:wwn \int_value:w
\else:
\exp_after:wN \@@_ln_exponent_small:NNww
\exp_after:wN 2
- \exp_after:wN \@@_fixed_add:wwn \__int_value:w -
+ \exp_after:wN \@@_fixed_add:wwn \int_value:w -
\fi:
\fi:
#2; #1;
@@ -648,7 +649,7 @@
\else:
\exp_after:wN \@@_sanitize:Nw
\exp_after:wN 0
- \__int_value:w #1 \__int_eval:w
+ \int_value:w #1 \@@_int_eval:w
\if_int_compare:w #4 < 0 \exp_stop_f:
\exp_after:wN \use_i:nn
\else:
@@ -698,7 +699,7 @@
; #2#3#4 0000 0000 ;
}
\cs_new:Npn \@@_exp_Taylor_ii:ww #1; #2;
- { \@@_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s__stop }
+ { \@@_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s_stop }
\cs_new:Npn \@@_exp_Taylor_loop:www #1; #2; #3;
{
\if_int_compare:w #1 = 1 \exp_stop_f:
@@ -709,11 +710,11 @@
\@@_fixed_mul:wwn #2 ;
{
\exp_after:wN \@@_exp_Taylor_loop:www
- \__int_value:w \__int_eval:w #1 - 1 ;
+ \int_value:w \@@_int_eval:w #1 - 1 ;
#2 ;
}
}
-\cs_new:Npn \@@_exp_Taylor_break:Nww #1 #2; #3 \s__stop
+\cs_new:Npn \@@_exp_Taylor_break:Nww #1 #2; #3 \s_stop
{ \@@_fixed_add_one:wN #2 ; }
% \end{macrocode}
% \end{macro}
@@ -742,7 +743,7 @@
% current total. The loop is done by having the auxiliary for one
% exponent call the auxiliary for the next exponent. The current
% total is expressed by leaving the exponent behind in the input
-% stream (we are currently within an \cs{__int_eval:w}), and keeping
+% stream (we are currently within an \cs{@@_int_eval:w}), and keeping
% track of a fixed point number, |#1| for the numbered auxiliaries.
% Our usage of \cs{if_case:w} is somewhat dirty for optimization:
% \TeX{} jumps to the appropriate case, but we then close the
@@ -752,9 +753,9 @@
\cs_new:Npn \@@_exp_pos_large:NnnNwn #1#2#3 #4#5; #6
{
\exp_after:wN \exp_after:wN
- \cs:w @@_exp_large_ \__int_to_roman:w #6 :wN \exp_after:wN \cs_end:
+ \cs:w @@_exp_large_ \@@_int_to_roman:w #6 :wN \exp_after:wN \cs_end:
\exp_after:wN \c_@@_one_fixed_tl
- \__int_value:w #3 #4 \exp_stop_f:
+ \int_value:w #3 #4 \exp_stop_f:
#5 00000 ;
}
\cs_new:Npn \@@_exp_large:w #1 \or: #2 \fi:
@@ -989,7 +990,7 @@
\cs_new:Npn \@@_pow_normal_o:ww
\s_@@ \@@_chk:w 1 #1#2#3; \s_@@ \@@_chk:w #4#5
{
- \if_int_compare:w \__str_if_eq_x:nn { #2 #3 }
+ \if_int_compare:w \@@_str_if_eq_x:nn { #2 #3 }
{ 1 {1000} {0000} {0000} {0000} } = 0 \exp_stop_f:
\if_int_compare:w #4 #1 = 32 \exp_stop_f:
\exp_after:wN \@@_case_return_ii_o:ww
@@ -1036,7 +1037,7 @@
{
\exp_after:wN \@@_sanitize:Nw
\exp_after:wN 0
- \__int_value:w
+ \int_value:w
\if:w #1 \if_int_compare:w #3 > 0 \exp_stop_f: 0 \else: 2 \fi:
\exp_after:wN \@@_pow_npos_aux:NNnww
\exp_after:wN +
@@ -1060,7 +1061,7 @@
\cs_new:Npn \@@_pow_npos_aux:NNnww #1#2#3#4#5; \s_@@ \@@_chk:w 1#6#7#8;
{
#1
- \__int_eval:w
+ \@@_int_eval:w
\@@_ln_significand:NNNNnnnN #4#5
\@@_pow_exponent:wnN {#3}
\@@_fixed_mul:wwn #8 {0000}{0000} ;
@@ -1081,37 +1082,37 @@
\cs_new:Npn \@@_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8;
{ %^^A todo: use that in ln.
\exp_after:wN \@@_fixed_mul_after:wwn
- \__int_value:w \__int_eval:w \c_@@_leading_shift_int
+ \int_value:w \@@_int_eval:w \c_@@_leading_shift_int
\exp_after:wN \@@_pack:NNNNNw
- \__int_value:w \__int_eval:w \c_@@_middle_shift_int
+ \int_value:w \@@_int_eval:w \c_@@_middle_shift_int
#1#2*23025 - #1 #3
\exp_after:wN \@@_pack:NNNNNw
- \__int_value:w \__int_eval:w \c_@@_middle_shift_int
+ \int_value:w \@@_int_eval:w \c_@@_middle_shift_int
#1 #2*8509 - #1 #4
\exp_after:wN \@@_pack:NNNNNw
- \__int_value:w \__int_eval:w \c_@@_middle_shift_int
+ \int_value:w \@@_int_eval:w \c_@@_middle_shift_int
#1 #2*2994 - #1 #5
\exp_after:wN \@@_pack:NNNNNw
- \__int_value:w \__int_eval:w \c_@@_middle_shift_int
+ \int_value:w \@@_int_eval:w \c_@@_middle_shift_int
#1 #2*0456 - #1 #6
\exp_after:wN \@@_pack:NNNNNw
- \__int_value:w \__int_eval:w \c_@@_trailing_shift_int
+ \int_value:w \@@_int_eval:w \c_@@_trailing_shift_int
#1 #2*8401 - #1 #7
#1 ( #2*7991 - #8 ) / 1 0000 ; ;
}
\cs_new:Npn \@@_pow_B:wwN #1#2#3#4#5#6; #7;
{
\if_int_compare:w #7 < 0 \exp_stop_f:
- \exp_after:wN \@@_pow_C_neg:w \__int_value:w -
+ \exp_after:wN \@@_pow_C_neg:w \int_value:w -
\else:
\if_int_compare:w #7 < 22 \exp_stop_f:
- \exp_after:wN \@@_pow_C_pos:w \__int_value:w
+ \exp_after:wN \@@_pow_C_pos:w \int_value:w
\else:
- \exp_after:wN \@@_pow_C_overflow:w \__int_value:w
+ \exp_after:wN \@@_pow_C_overflow:w \int_value:w
\fi:
\fi:
#7 \exp_after:wN ;
- \__int_value:w \__int_eval:w 10 0000 + #1 \__int_eval_end:
+ \int_value:w \@@_int_eval:w 10 0000 + #1 \@@_int_eval_end:
#2#3#4#5#6 0000 0000 0000 0000 0000 0000 ; %^^A todo: how many 0?
}
\cs_new:Npn \@@_pow_C_overflow:w #1; #2; #3
@@ -1133,11 +1134,11 @@
\exp_after:wN #2
\else:
\if_meaning:w 0 #2
- \exp_after:wN \@@_pow_C_pos_loop:wN \__int_value:w
+ \exp_after:wN \@@_pow_C_pos_loop:wN \int_value:w
\else:
- \exp_after:wN \@@_pow_C_overflow:w \__int_value:w
+ \exp_after:wN \@@_pow_C_overflow:w \int_value:w
\fi:
- \__int_eval:w #1 - 1 \exp_after:wN ;
+ \@@_int_eval:w #1 - 1 \exp_after:wN ;
\fi:
}
\cs_new:Npn \@@_pow_C_pack:w
@@ -1162,7 +1163,7 @@
\if_case:w \@@_pow_neg_case:w #4 ;
\exp_after:wN \@@_pow_neg_aux:wNN
\or:
- \if_int_compare:w \__int_eval:w #1 / 2 = 1 \exp_stop_f:
+ \if_int_compare:w \@@_int_eval:w #1 / 2 = 1 \exp_stop_f:
\@@_invalid_operation_o:Nww ^ #3; #4;
\exp:w \exp_end_continue_f:w
\exp_after:wN \exp_after:wN
@@ -1178,7 +1179,7 @@
\exp_after:wN \s_@@
\exp_after:wN \@@_chk:w
\exp_after:wN #2
- \__int_value:w \__int_eval:w 2 - #3 \__int_eval_end:
+ \int_value:w \@@_int_eval:w 2 - #3 \@@_int_eval_end:
}
% \end{macrocode}
% ^^A todo: is this \@@_exp_after_o:w necessary? Appropriate?