diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex | 2400 |
1 files changed, 1326 insertions, 1074 deletions
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex index 95f3f5f447d..8d95f514b00 100644 --- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex @@ -62,7 +62,7 @@ %% l3legacy.dtx (with options: `package') %% l3deprecation.dtx (with options: `package') %% -%% Copyright (C) 1990-2024 The LaTeX Project +%% Copyright (C) 1990-2025 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -75,7 +75,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2024-09-10}% +\def\ExplFileDate{2025-01-18}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -716,7 +716,6 @@ Type H <return> for immediate help}\def~{\errmessage{% \__kernel_primitive:NN \pdfoutline \tex_pdfoutline:D \__kernel_primitive:NN \pdfoutput \tex_pdfoutput:D \__kernel_primitive:NN \pdfpageattr \tex_pdfpageattr:D - \__kernel_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D \__kernel_primitive:NN \pdfpagebox \tex_pdfpagebox:D \__kernel_primitive:NN \pdfpageref \tex_pdfpageref:D \__kernel_primitive:NN \pdfpageresources \tex_pdfpageresources:D @@ -1313,13 +1312,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \__kernel_primitive:NN \ybaselineshift \tex_ybaselineshift:D \__kernel_primitive:NN \yoko \tex_yoko:D \__kernel_primitive:NN \vfi \tex_vfi:D - \__kernel_primitive:NN \currentcjktoken \tex_currentcjktoken:D \__kernel_primitive:NN \disablecjktoken \tex_disablecjktoken:D \__kernel_primitive:NN \enablecjktoken \tex_enablecjktoken:D \__kernel_primitive:NN \forcecjktoken \tex_forcecjktoken:D \__kernel_primitive:NN \kchar \tex_kchar:D \__kernel_primitive:NN \kchardef \tex_kchardef:D - \__kernel_primitive:NN \kuten \tex_kuten:D \__kernel_primitive:NN \uptexrevision \tex_uptexrevision:D \__kernel_primitive:NN \uptexversion \tex_uptexversion:D \__kernel_primitive:NN \odelcode \tex_odelcode:D @@ -3076,13 +3073,23 @@ Type H <return> for immediate help}\def~{\errmessage{% \__cs_generate_variant:w #2 \s__cs_mark {#3} {#4} {#5} } \cs_new_protected:Npn \__cs_generate_variant_p_form:nnn #1#2 - { \cs_generate_variant:cn { #1 _p : #2 } } + { \__cs_generate_variant_check:nn { #1 _p : #2 } } \cs_new_protected:Npn \__cs_generate_variant_T_form:nnn #1#2 - { \cs_generate_variant:cn { #1 : #2 T } } + { \__cs_generate_variant_check:nn { #1 : #2 T } } \cs_new_protected:Npn \__cs_generate_variant_F_form:nnn #1#2 - { \cs_generate_variant:cn { #1 : #2 F } } + { \__cs_generate_variant_check:nn { #1 : #2 F } } \cs_new_protected:Npn \__cs_generate_variant_TF_form:nnn #1#2 - { \cs_generate_variant:cn { #1 : #2 TF } } + { \__cs_generate_variant_check:nn { #1 : #2 TF } } +\cs_new_protected:Npn \__cs_generate_variant_check:nn #1#2 + { + \cs_if_exist:cTF {#1} + { \cs_generate_variant:cn {#1} {#2} } + { + \msg_error:nne + { kernel } { conditional-base-undefined } + { \token_to_str:c {#1} } + } + } \cs_new_protected:Npn \exp_args_generate:n #1 { \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} } @@ -3476,7 +3483,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__kernel_chk_if_free_cs:N #1 \cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} } } -\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce } +\cs_generate_variant:Nn \tl_const:Nn { NV , Ne , c , cV , ce } \cs_generate_variant:Nn \tl_const:Nn { Nx , cx } \cs_new_protected:Npn \tl_clear:N #1 { \tex_let:D #1 = ~ \c_empty_tl } @@ -3867,6 +3874,37 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__tl_replace_next_aux:w { \__tl_replace_next:w { } { } } \cs_new_eq:NN \__tl_replace_wrap:w ? \cs_new_eq:NN \__tl_replace_next:w ? +\cs_new_protected:Npn \tl_regex_replace_once:Nnn #1#2#3 + { \regex_replace_once:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_once:Nnn { c } +\cs_new_protected:Npn \tl_regex_replace_once:NNn #1#2#3 + { \regex_replace_once:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_once:NNn { c } +\cs_new_protected:Npn \tl_regex_replace_all:Nnn #1#2#3 + { \regex_replace_all:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_all:Nnn { c } +\cs_new_protected:Npn \tl_regex_replace_all:NNn #1#2#3 + { \regex_replace_all:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_all:NNn { c } +\group_begin: + \cs_set_protected:Npn \__tl_tmp:w #1#2#3 + { + \cs_new_protected:cpe { tl_regex_greplace_ #1 :N #2 n } ##1##2##3 + { + \group_begin: + \tl_set_eq:NN \exp_not:N \l__tl_internal_a_tl ##1 + \exp_not:c { regex_replace_ #1 :Nn #2 } + #3 {##2} {##3} \exp_not:N \l__tl_internal_a_tl + \tl_gset_eq:NN ##1 \exp_not:N \l__tl_internal_a_tl + \group_end: + } + \cs_generate_variant:cn { tl_regex_greplace_ #1 :N #2 n } { c } + } + \__tl_tmp:w { once } n { } + \__tl_tmp:w { once } N \use:n + \__tl_tmp:w { all } n { } + \__tl_tmp:w { all } N \use:n +\group_end: \cs_new_protected:Npn \tl_remove_once:Nn #1#2 { \tl_replace_once:Nnn #1 {#2} { } } \cs_new_protected:Npn \tl_gremove_once:Nn #1#2 @@ -4019,6 +4057,20 @@ Type H <return> for immediate help}\def~{\errmessage{% \prg_return_false: \fi: } +\prg_new_protected_conditional:Npnn \tl_if_regex_match:nn #1#2 { TF , T , F } + { + \regex_match:nnTF {#2} {#1} + \prg_return_true: \prg_return_false: + } +\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nn + { V } { TF , T , F } +\prg_new_protected_conditional:Npnn \tl_if_regex_match:nN #1#2 { TF , T , F } + { + \regex_match:nNTF {#2} #1 + \prg_return_true: \prg_return_false: + } +\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nN + { V } { TF , T , F } \cs_new:Npn \tl_map_function:nN #1#2 { \__tl_map_function:Nnnnnnnnn #2 #1 @@ -5622,6 +5674,45 @@ Type H <return> for immediate help}\def~{\errmessage{% #1 #2 { #3 } \__seq_pop_item_def: } +\cs_new_protected:Npn \seq_set_regex_extract_once:Nnn #1#2#3 + { \regex_extract_once:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_once:Nnn { c } +\cs_new_protected:Npn \seq_set_regex_extract_once:NNn #1#2#3 + { \regex_extract_once:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_once:NNn { c } +\cs_new_protected:Npn \seq_set_regex_extract_all:Nnn #1#2#3 + { \regex_extract_all:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_all:Nnn { c } +\cs_new_protected:Npn \seq_set_regex_extract_all:NNn #1#2#3 + { \regex_extract_all:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_all:NNn { c } +\cs_new_protected:Npn \seq_set_regex_split:Nnn #1#2#3 + { \regex_split:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_split:Nnn { c } +\cs_new_protected:Npn \seq_set_regex_split:NNn #1#2#3 + { \regex_split:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_split:NNn { c } +\group_begin: + \cs_set_protected:Npn \__seq_tmp:w #1#2#3 + { + \cs_new_protected:cpe { seq_gset_regex_ #1 :N #2 n } ##1##2##3 + { + \group_begin: + \seq_set_eq:NN \exp_not:N \l__seq_tmp_seq ##1 + \exp_not:c { regex_ #1 :Nn #2 } + #3 {##2} {##3} \exp_not:N \l__seq_tmp_seq + \seq_gset_eq:NN ##1 \exp_not:N \l__seq_tmp_seq + \group_end: + } + \cs_generate_variant:cn { seq_gset_regex_ #1 :N #2 n } { c } + } + \__seq_tmp:w { extract_once } n { } + \__seq_tmp:w { extract_once } N \use:n + \__seq_tmp:w { extract_all } n { } + \__seq_tmp:w { extract_all } N \use:n + \__seq_tmp:w { split } n { } + \__seq_tmp:w { split } N \use:n +\group_end: \cs_new_protected:Npn \seq_concat:NNN #1#2#3 { \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } } \cs_new_protected:Npn \seq_gconcat:NNN #1#2#3 @@ -5662,20 +5753,20 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , Ne , No , Nx } \cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx } \cs_new:Npn \__seq_wrap_item:n #1 { \exp_not:n { \__seq_item:n {#1} } } -\seq_new:N \l__seq_remove_seq +\seq_new:N \l__seq_tmp_seq \cs_new_protected:Npn \seq_remove_duplicates:N { \__seq_remove_duplicates:NN \seq_set_eq:NN } \cs_new_protected:Npn \seq_gremove_duplicates:N { \__seq_remove_duplicates:NN \seq_gset_eq:NN } \cs_new_protected:Npn \__seq_remove_duplicates:NN #1#2 { - \seq_clear:N \l__seq_remove_seq + \seq_clear:N \l__seq_tmp_seq \seq_map_inline:Nn #2 { - \seq_if_in:NnF \l__seq_remove_seq {##1} - { \seq_put_right:Nn \l__seq_remove_seq {##1} } + \seq_if_in:NnF \l__seq_tmp_seq {##1} + { \seq_put_right:Nn \l__seq_tmp_seq {##1} } } - #1 #2 \l__seq_remove_seq + #1 #2 \l__seq_tmp_seq } \cs_generate_variant:Nn \seq_remove_duplicates:N { c } \cs_generate_variant:Nn \seq_gremove_duplicates:N { c } @@ -6298,13 +6389,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \int_eval:n #1 { \tex_the:D \__int_eval:w #1 \__int_eval_end: } \cs_new:Npn \int_eval:w { \tex_the:D \__int_eval:w } +\cs_new_eq:NN \__int_sep: \tex_right:D \cs_new:Npn \int_sign:n #1 { \int_value:w \exp_after:wN \__int_sign:Nw - \int_value:w \__int_eval:w #1 \__int_eval_end: ; + \int_value:w \__int_eval:w #1 \__int_eval_end: \__int_sep: \exp_stop_f: } -\cs_new:Npn \__int_sign:Nw #1#2 ; +\cs_new:Npn \__int_sign:Nw #1#2 \__int_sep: { \if_meaning:w 0 #1 0 @@ -6323,20 +6415,20 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \int_max:nn #1#2 { \int_value:w \exp_after:wN \__int_maxmin:wwN - \int_value:w \__int_eval:w #1 \exp_after:wN ; - \int_value:w \__int_eval:w #2 ; + \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep: + \int_value:w \__int_eval:w #2 \__int_sep: > \exp_stop_f: } \cs_new:Npn \int_min:nn #1#2 { \int_value:w \exp_after:wN \__int_maxmin:wwN - \int_value:w \__int_eval:w #1 \exp_after:wN ; - \int_value:w \__int_eval:w #2 ; + \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep: + \int_value:w \__int_eval:w #2 \__int_sep: < \exp_stop_f: } -\cs_new:Npn \__int_maxmin:wwN #1 ; #2 ; #3 +\cs_new:Npn \__int_maxmin:wwN #1 \__int_sep: #2 \__int_sep: #3 { \if_int_compare:w #1 #3 #2 ~ #1 @@ -6348,11 +6440,11 @@ Type H <return> for immediate help}\def~{\errmessage{% { \int_value:w \__int_eval:w \exp_after:wN \__int_div_truncate:NwNw - \int_value:w \__int_eval:w #1 \exp_after:wN ; - \int_value:w \__int_eval:w #2 ; + \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep: + \int_value:w \__int_eval:w #2 \__int_sep: \__int_eval_end: } -\cs_new:Npn \__int_div_truncate:NwNw #1#2; #3#4; +\cs_new:Npn \__int_div_truncate:NwNw #1#2 \__int_sep: #3#4 \__int_sep: { \if_meaning:w 0 #1 0 @@ -6370,12 +6462,12 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \int_mod:nn #1#2 { \int_value:w \__int_eval:w \exp_after:wN \__int_mod:ww - \int_value:w \__int_eval:w #1 \exp_after:wN ; - \int_value:w \__int_eval:w #2 ; + \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep: + \int_value:w \__int_eval:w #2 \__int_sep: \__int_eval_end: } -\cs_new:Npn \__int_mod:ww #1; #2; - { #1 - ( \__int_div_truncate:NwNw #1 ; #2 ; ) * #2 } +\cs_new:Npn \__int_mod:ww #1 \__int_sep: #2 \__int_sep: + { #1 - ( \__int_div_truncate:NwNw #1 \__int_sep: #2 \__int_sep: ) * #2 } \cs_new:Npn \__kernel_int_add:nnn #1#2#3 { \int_value:w \__int_eval:w #1 @@ -6471,8 +6563,32 @@ Type H <return> for immediate help}\def~{\errmessage{% { #1 = \__int_eval:w #2 \__int_eval_end: } \cs_new_protected:Npn \int_gset:Nn #1#2 { \tex_global:D #1 = \__int_eval:w #2 \__int_eval_end: } -\cs_generate_variant:Nn \int_set:Nn { c } -\cs_generate_variant:Nn \int_gset:Nn { c } +\cs_generate_variant:Nn \int_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \int_gset:Nn { NV , c , cV } +\cs_new_protected:Npn \int_set_regex_count:Nnn #1#2#3 + { \regex_count:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \int_set_regex_count:Nnn { c } +\cs_new_protected:Npn \int_gset_regex_count:Nnn #1#2#3 + { + \group_begin: + \int_set_eq:NN \l__int_internal_a_int #1 + \regex_count:nnN {#2} {#3} \l__int_internal_a_int + \int_gset_eq:NN #1 \l__int_internal_a_int + \group_end: + } +\cs_generate_variant:Nn \int_gset_regex_count:Nnn { c } +\cs_new_protected:Npn \int_set_regex_count:NNn #1#2#3 + { \regex_count:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \int_set_regex_count:Nnn { c } +\cs_new_protected:Npn \int_gset_regex_count:NNn #1#2#3 + { + \group_begin: + \int_set_eq:NN \l__int_internal_a_int #1 + \regex_count:NnN #2 {#3} \l__int_internal_a_int + \int_gset_eq:NN #1 \l__int_internal_a_int + \group_end: + } +\cs_generate_variant:Nn \int_gset_regex_count:NNn { c } \cs_new_eq:NN \int_use:N \tex_the:D \cs_new:Npn \int_use:c #1 { \tex_the:D \cs:w #1 \cs_end: } \cs_new_protected:Npn \__int_compare_error: @@ -6663,41 +6779,47 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npn \int_step_function:nnnN #1#2#3 { - \exp_after:wN \__int_step:wwwN - \int_value:w \__int_eval:w #1 \exp_after:wN ; - \int_value:w \__int_eval:w #2 \exp_after:wN ; - \int_value:w \__int_eval:w #3 ; + \exp_after:wN \__int_step:w + \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep: + \int_value:w \__int_eval:w #2 \exp_after:wN \__int_sep: + \int_value:w \__int_eval:w #3 \__int_sep: } -\cs_new:Npn \__int_step:wwwN #1; #2; #3; #4 +\cs_new:Npn \__int_step:w #1 \__int_sep: #2 \__int_sep: #3 \__int_sep: #4 { \int_compare:nNnTF {#2} > \c_zero_int - { \__int_step:NwnnN > } + { \__int_step:Nw > } { - \int_compare:nNnTF {#2} = \c_zero_int + \if_meaning:w 0 #2 + \exp_after:wN \use_ii:nn + \fi: + \use_none:n { \msg_expandable_error:nnn { kernel } { zero-step } {#4} \prg_break: } - { \__int_step:NwnnN < } + \__int_step:Nw < } - #1 ; {#2} {#3} #4 + #1 \__int_sep: {#2} {#3} {#4} \prg_break_point: } -\cs_new:Npn \__int_step:NwnnN #1#2 ; #3#4#5 +\cs_new:Npn \__int_step:Nw #1#2 \__int_sep: #3#4#5 { \if_int_compare:w #2 #1 #4 \exp_stop_f: \prg_break:n \fi: #5 {#2} - \exp_after:wN \__int_step:NwnnN + \exp_after:wN \__int_step:Nw \exp_after:wN #1 - \int_value:w \__int_eval:w #2 + #3 ; {#3} {#4} #5 + \int_value:w \__int_eval:w #2 + #3 \__int_sep: {#3} {#4} {#5} } \cs_new:Npn \int_step_function:nN - { \int_step_function:nnnN { 1 } { 1 } } + { \int_step_function:nnnN \c_one_int \c_one_int } \cs_new:Npn \int_step_function:nnN #1 - { \int_step_function:nnnN {#1} { 1 } } + { \int_step_function:nnnN {#1} \c_one_int } +\cs_new_eq:NN \int_step_tokens:nn \int_step_function:nN +\cs_new_eq:NN \int_step_tokens:nnn \int_step_function:nnN +\cs_new_eq:NN \int_step_tokens:nnnn \int_step_function:nnnN \cs_new_protected:Npn \int_step_inline:nn { \int_step_inline:nnnn { 1 } { 1 } } \cs_new_protected:Npn \int_step_inline:nnn #1 @@ -7585,6 +7707,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \__sys_const:nn { sys_if_engine_ #1 } { \str_if_eq_p:Vn \c_sys_engine_str {#1} } } +\__sys_const:nn + { sys_if_engine_opentype } + { \cs_if_exist_p:N \tex_Umathcode:D } \group_begin: \cs_set_eq:NN \lua_now:e \tex_directlua:D \str_const:Ne \c_sys_engine_exec_str @@ -8641,6 +8766,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \clist_use:Nn #1#2 { \clist_use:Nnnn #1 {#2} {#2} {#2} } \cs_generate_variant:Nn \clist_use:Nn { c } +\cs_new_eq:NN \clist_use:N \tl_use:N +\cs_generate_variant:Nn \clist_use:N { c } \cs_new:Npn \clist_use:nnnn #1#2#3#4 { \__clist_use:Nw \__clist_use_none_delimit_by_s_stop:w @@ -9075,7 +9202,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \group_end: \group_begin: \char_set_catcode_active:N \* - \tl_const:Nn \c_catcode_active_tl { \exp_not:N * } + \tl_const:Nn \c__token_active_tl { \exp_not:N * } \group_end: \prg_new_conditional:Npnn \token_if_group_begin:N #1 { p , T , F , TF } { @@ -9133,7 +9260,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } \prg_new_conditional:Npnn \token_if_active:N #1 { p , T , F , TF } { - \if_catcode:w \exp_not:N #1 \c_catcode_active_tl + \if_catcode:w \exp_not:N #1 \c__token_active_tl \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_eq_conditional:NNn \token_if_eq_meaning:NN \cs_if_eq:NN @@ -9935,7 +10062,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN { \tl_to_str:n {#2} } } } - { \exp_after:wN \__prop_get_linked:w #1 {#2} \use:n { } { } } + { \exp_after:wN \__prop_get_linked:w #1 {#2} \exp_not:n { } { } } } \cs_new:Npn \__prop_item:nnn #1#2#3 { @@ -11055,6 +11182,13 @@ Type H <return> for immediate help}\def~{\errmessage{% } \msg_new:nnn { kernel } { randint-backward-range } { Wrong~order~of~bounds~in~\iow_char:N\\int_rand:nn{#1}{#2}. } +\msg_new:nnnn { kernel } { conditional-base-undefined } + { Undefined~conditional~base~function~'#1'. } + { + \c__msg_coding_error_text_tl + LaTeX~has~been~asked~to~define~a~variant~of~the~conditional~'#1',~ + but~the~latter~is~not~defined. + } \msg_new:nnnn { kernel } { conditional-form-unknown } { Conditional~form~'#1'~for~function~'#2'~unknown. } { @@ -12364,6 +12498,8 @@ Type H <return> for immediate help}\def~{\errmessage{% {#3} } } +\cs_new_protected:Npn \file_forget:n #1 + { \cs_undefine:c { __file_seen_ \file_full_name:n {#1} : } } \cs_new_protected:Npn \file_get_full_name:nN #1#2 { \file_get_full_name:nNF {#1} #2 @@ -12953,8 +13089,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: } \cs_new_protected:Npn \dim_gset:Nn #1#2 { \tex_global:D #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: } -\cs_generate_variant:Nn \dim_set:Nn { c } -\cs_generate_variant:Nn \dim_gset:Nn { c } +\cs_generate_variant:Nn \dim_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \dim_gset:Nn { NV , c , cV } \cs_new_protected:Npn \dim_set_eq:NN #1#2 { #1 = #2 \scan_stop: } \cs_generate_variant:Nn \dim_set_eq:NN { c , Nc , cc } @@ -13380,8 +13516,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { #1 = \tex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gset:Nn #1#2 { \tex_global:D #1 = \tex_glueexpr:D #2 \scan_stop: } -\cs_generate_variant:Nn \skip_set:Nn { c } -\cs_generate_variant:Nn \skip_gset:Nn { c } +\cs_generate_variant:Nn \skip_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \skip_gset:Nn { NV , c , cV } \cs_new_protected:Npn \skip_set_eq:NN #1#2 { #1 = #2 } \cs_generate_variant:Nn \skip_set_eq:NN { c , Nc , cc } \cs_new_protected:Npn \skip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 } @@ -13473,8 +13609,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { #1 = \tex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gset:Nn #1#2 { \tex_global:D #1 = \tex_muexpr:D #2 \scan_stop: } -\cs_generate_variant:Nn \muskip_set:Nn { c } -\cs_generate_variant:Nn \muskip_gset:Nn { c } +\cs_generate_variant:Nn \muskip_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \muskip_gset:Nn { NV , c , cV } \cs_new_protected:Npn \muskip_set_eq:NN #1#2 { #1 = #2 } \cs_generate_variant:Nn \muskip_set_eq:NN { c , Nc , cc } \cs_new_protected:Npn \muskip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 } @@ -13782,16 +13918,27 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \cs_set_eq:cN {#1} \tex_undefined:D } -\cs_new_protected:Npn \keys_define:nn - { \__keys_define:onn \l__keys_module_str } -\cs_generate_variant:Nn \keys_define:nn { ne , nx } -\cs_new_protected:Npn \__keys_define:nnn #1#2#3 +\cs_new_protected:Npn \keys_define:nn #1#2 { - \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#2} } - \keyval_parse:NNn \__keys_define:n \__keys_define:nn {#3} - \str_set:Nn \l__keys_module_str {#1} + \use:e + { + \exp_not:n + { + \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#1} } + \keyval_parse:NNn \__keys_define:n \__keys_define:nn {#2} + } + \__keys_reset_var:N \l__keys_module_str + \__keys_reset_var:N \l__keys_inherit_str + \__keys_reset_var:N \l_keys_choice_tl + \__keys_reset_var:N \l_keys_key_tl + \__keys_reset_var:N \l_keys_key_str + \__keys_reset_var:N \l_keys_path_tl + \__keys_reset_var:N \l_keys_path_str + \__keys_reset_var:N \l_keys_value_tl + \int_set:Nn \l_keys_choice_int { \int_use:N \l_keys_choice_int } + } } -\cs_generate_variant:Nn \__keys_define:nnn { o } +\cs_generate_variant:Nn \keys_define:nn { ne , nx } \cs_new_protected:Npn \__keys_define:n #1 { \bool_set_true:N \l__keys_no_value_bool @@ -14055,14 +14202,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs:w if#1 \cs_end: } } -\cs_new_protected:Npn \__keys_meta_make:n #1 - { - \exp_args:NVo \__keys_cmd_set_direct:nn \l_keys_path_str - { - \exp_after:wN \__keys_set:nn \exp_after:wN - { \l__keys_module_str } {#1} - } - } +\cs_new_protected:Npn \__keys_meta_make:n + { \exp_args:NV \__keys_meta_make:nn \l__keys_module_str } \cs_new_protected:Npn \__keys_meta_make:nn #1#2 { \exp_args:NV \__keys_cmd_set_direct:nn @@ -14389,33 +14530,34 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__keys_value_requirement:nn { forbidden } {#1} } \cs_new_protected:cpn { \c__keys_props_root_str .value_required:n } #1 { \__keys_value_requirement:nn { required } {#1} } -\cs_new_protected:Npn \__keys_set:nnnnNn +\cs_new_protected:Npn \__keys_set:nnnnNn #1#2#3#4#5#6 { - \exp_args:Nooo \__keys_set:nnnnnnnNn - \l__keys_unused_clist - \l__keys_selective_clist - \l__keys_relative_tl - } -\cs_new_protected:Npn \__keys_set:nnnnnnnNn #1#2#3#4#5#6#7#8#9 - { - \clist_clear:N \l__keys_unused_clist - \clist_set:Ne \l__keys_selective_clist { \tl_to_str:n {#5} } - \tl_set:Nn \l__keys_relative_tl {#7} \use:e { \exp_not:n { - #9 - \__keys_set:nn {#4} {#6} + \clist_clear:N \l__keys_unused_clist + \clist_set:Ne \l__keys_selective_clist { \tl_to_str:n {#2} } + \tl_set:Nn \l__keys_relative_tl {#4} + #6 + \__keys_set:nn {#1} {#3} + \clist_set_eq:NN #5 \l__keys_unused_clist } \__keys_reset_bool:N \l__keys_only_known_bool \__keys_reset_bool:N \l__keys_exclude_bool \__keys_reset_bool:N \l__keys_selective_bool + \__keys_reset_var:N \l__keys_unused_clist + \__keys_reset_var:N \l__keys_selective_clist + \__keys_reset_var:N \l__keys_relative_tl + \__keys_reset_var:N \l__keys_inherit_str + \__keys_reset_var:N \l_keys_choice_tl + \__keys_reset_var:N \l_keys_key_tl + \__keys_reset_var:N \l_keys_key_str + \__keys_reset_var:N \l_keys_path_tl + \__keys_reset_var:N \l_keys_path_str + \__keys_reset_var:N \l_keys_value_tl + \int_set:Nn \l_keys_choice_int { \int_use:N \l_keys_choice_int } } - \clist_set_eq:NN #8 \l__keys_unused_clist - \__kernel_tl_set:Nx \l__keys_unused_clist { \exp_not:n {#1} } - \__kernel_tl_set:Nx \l__keys_selective_clist {#2} - \__kernel_tl_set:Nx \l__keys_relative_tl { \exp_not:n {#3} } } \cs_new:Npn \__keys_reset_bool:N #1 { @@ -14423,6 +14565,12 @@ Type H <return> for immediate help}\def~{\errmessage{% { bool_set_ \bool_if:NTF #1 { true } { false } :N } \exp_not:N #1 } +\cs_new:Npn \__keys_reset_var:N #1 + { + \exp_not:n + { \__kernel_tl_set:Nx #1 } + { \exp_not:N \exp_not:n { \exp_not:o { #1 } } } + } \cs_new_protected:Npn \__keys_set:nn #1#2 { \exp_args:No \__keys_set:nnn \l__keys_module_str {#1} {#2} } \cs_new_protected:Npn \__keys_set:nnn #1#2#3 @@ -15226,21 +15374,24 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_eq:NN \__fp_int_eval:w \tex_numexpr:D \cs_new_eq:NN \__fp_int_eval_end: \scan_stop: \cs_new_eq:NN \__fp_int_to_roman:w \tex_romannumeral:D +\cs_new_eq:NN \__fp_sep: \tex_right:D \cs_new:Npn \__fp_use_none_stop_f:n #1 { \exp_stop_f: } -\cs_new:Npn \__fp_use_s:n #1 { #1; } -\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2; } -\cs_new:Npn \__fp_use_none_until_s:w #1; { } -\cs_new:Npn \__fp_use_i_until_s:nw #1#2; {#1} -\cs_new:Npn \__fp_use_ii_until_s:nnw #1#2#3; {#2} -\cs_new:Npn \__fp_reverse_args:Nww #1 #2; #3; { #1 #3; #2; } -\cs_new:Npn \__fp_rrot:www #1; #2; #3; { #2; #3; #1; } -\cs_new:Npn \__fp_use_i:ww #1; #2; { #1; } -\cs_new:Npn \__fp_use_i:www #1; #2; #3; { #1; } +\cs_new:Npn \__fp_use_s:n #1 { #1\__fp_sep: } +\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2\__fp_sep: } +\cs_new:Npn \__fp_use_none_until_s:w #1\__fp_sep: { } +\cs_new:Npn \__fp_use_i_until_s:nw #1#2\__fp_sep: {#1} +\cs_new:Npn \__fp_use_ii_until_s:nnw #1#2#3\__fp_sep: {#2} +\cs_new:Npn \__fp_reverse_args:Nww #1 #2\__fp_sep: #3\__fp_sep: + { #1 #3\__fp_sep: #2\__fp_sep: } +\cs_new:Npn \__fp_rrot:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: + { #2\__fp_sep: #3\__fp_sep: #1\__fp_sep: } +\cs_new:Npn \__fp_use_i:ww #1\__fp_sep: #2\__fp_sep: { #1\__fp_sep: } +\cs_new:Npn \__fp_use_i:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: { #1\__fp_sep: } \cs_new_protected:Npn \__fp_misused:n #1 { \msg_error:nne { fp } { misused } { \fp_to_tl:n {#1} } } \scan_new:N \s__fp -\cs_new_protected:Npn \__fp_chk:w #1 ; - { \__fp_misused:n { \s__fp \__fp_chk:w #1 ; } } +\cs_new_protected:Npn \__fp_chk:w #1 \__fp_sep: + { \__fp_misused:n { \s__fp \__fp_chk:w #1 \__fp_sep: } } \scan_new:N \s__fp_expr_mark \scan_new:N \s__fp_expr_stop \scan_new:N \s__fp_mark @@ -15251,11 +15402,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \scan_new:N \s__fp_overflow \scan_new:N \s__fp_division \scan_new:N \s__fp_exact -\tl_const:Nn \c_zero_fp { \s__fp \__fp_chk:w 0 0 \s__fp_exact ; } -\tl_const:Nn \c_minus_zero_fp { \s__fp \__fp_chk:w 0 2 \s__fp_exact ; } -\tl_const:Nn \c_inf_fp { \s__fp \__fp_chk:w 2 0 \s__fp_exact ; } -\tl_const:Nn \c_minus_inf_fp { \s__fp \__fp_chk:w 2 2 \s__fp_exact ; } -\tl_const:Nn \c_nan_fp { \s__fp \__fp_chk:w 3 1 \s__fp_exact ; } +\tl_const:Nn \c_zero_fp { \s__fp \__fp_chk:w 0 0 \s__fp_exact \__fp_sep: } +\tl_const:Nn \c_minus_zero_fp { \s__fp \__fp_chk:w 0 2 \s__fp_exact \__fp_sep: } +\tl_const:Nn \c_inf_fp { \s__fp \__fp_chk:w 2 0 \s__fp_exact \__fp_sep: } +\tl_const:Nn \c_minus_inf_fp { \s__fp \__fp_chk:w 2 2 \s__fp_exact \__fp_sep: } +\tl_const:Nn \c_nan_fp { \s__fp \__fp_chk:w 3 1 \s__fp_exact \__fp_sep: } \int_const:Nn \c__fp_prec_int { 16 } \int_const:Nn \c__fp_half_prec_int { 8 } \int_const:Nn \c__fp_block_int { 4 } @@ -15267,12 +15418,12 @@ Type H <return> for immediate help}\def~{\errmessage{% { \s__fp \__fp_chk:w 1 0 { \int_eval:n { \c__fp_max_exponent_int + 1 } } - {1000} {0000} {0000} {0000} ; + {1000} {0000} {0000} {0000} \__fp_sep: } \cs_new:Npn \__fp_zero_fp:N #1 - { \s__fp \__fp_chk:w 0 #1 \s__fp_underflow ; } + { \s__fp \__fp_chk:w 0 #1 \s__fp_underflow \__fp_sep: } \cs_new:Npn \__fp_inf_fp:N #1 - { \s__fp \__fp_chk:w 2 #1 \s__fp_overflow ; } + { \s__fp \__fp_chk:w 2 #1 \s__fp_overflow \__fp_sep: } \cs_new:Npn \__fp_exponent:w \s__fp \__fp_chk:w #1 { \if_meaning:w 1 #1 @@ -15291,7 +15442,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \s__fp { \__fp_use_i_until_s:nw 4 } \s__fp_stop } -\cs_new:Npn \__fp_sanitize:Nw #1 #2; +\cs_new:Npn \__fp_sanitize:Nw #1 #2\__fp_sep: { \if_case:w \if_int_compare:w #2 > \c__fp_max_exponent_int 1 ~ \else: @@ -15303,8 +15454,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \s__fp \__fp_chk:w 1 #1 {#2} } -\cs_new:Npn \__fp_sanitize:wN #1; #2 { \__fp_sanitize:Nw #2 #1; } -\cs_new:Npn \__fp_sanitize_zero:w \s__fp \__fp_chk:w #1 #2 #3; +\cs_new:Npn \__fp_sanitize:wN #1\__fp_sep: #2 { \__fp_sanitize:Nw #2 #1\__fp_sep: } +\cs_new:Npn \__fp_sanitize_zero:w \s__fp \__fp_chk:w #1 #2 #3\__fp_sep: { \c_zero_fp } \cs_new:Npn \__fp_exp_after_o:w \s__fp \__fp_chk:w #1 { @@ -15326,52 +15477,52 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp:w \exp_end_continue_f:w #1 } #2 } -\cs_new:Npn \__fp_exp_after_special:nNNw #1#2#3#4; +\cs_new:Npn \__fp_exp_after_special:nNNw #1#2#3#4\__fp_sep: { \exp_after:wN \s__fp \exp_after:wN \__fp_chk:w \exp_after:wN #2 \exp_after:wN #3 \exp_after:wN #4 - \exp_after:wN ; + \exp_after:wN \__fp_sep: #1 } -\cs_new:Npn \__fp_exp_after_normal:nNNw #1 1 #2 #3 #4#5#6#7; +\cs_new:Npn \__fp_exp_after_normal:nNNw #1 1 #2 #3 #4#5#6#7\__fp_sep: { \exp_after:wN \__fp_exp_after_normal:Nwwwww \exp_after:wN #2 - \int_value:w #3 \exp_after:wN ; - \int_value:w 1 #4 \exp_after:wN ; - \int_value:w 1 #5 \exp_after:wN ; - \int_value:w 1 #6 \exp_after:wN ; - \int_value:w 1 #7 \exp_after:wN ; #1 + \int_value:w #3 \exp_after:wN \__fp_sep: + \int_value:w 1 #4 \exp_after:wN \__fp_sep: + \int_value:w 1 #5 \exp_after:wN \__fp_sep: + \int_value:w 1 #6 \exp_after:wN \__fp_sep: + \int_value:w 1 #7 \exp_after:wN \__fp_sep: #1 } \cs_new:Npn \__fp_exp_after_normal:Nwwwww - #1 #2; 1 #3 ; 1 #4 ; 1 #5 ; 1 #6 ; - { \s__fp \__fp_chk:w 1 #1 {#2} {#3} {#4} {#5} {#6} ; } + #1 #2\__fp_sep: 1 #3 \__fp_sep: 1 #4 \__fp_sep: 1 #5 \__fp_sep: 1 #6 \__fp_sep: + { \s__fp \__fp_chk:w 1 #1 {#2} {#3} {#4} {#5} {#6} \__fp_sep: } \scan_new:N \s__fp_tuple -\cs_new_protected:Npn \__fp_tuple_chk:w #1 ; - { \__fp_misused:n { \s__fp_tuple \__fp_tuple_chk:w #1 ; } } +\cs_new_protected:Npn \__fp_tuple_chk:w #1 \__fp_sep: + { \__fp_misused:n { \s__fp_tuple \__fp_tuple_chk:w #1 \__fp_sep: } } \tl_const:Nn \c__fp_empty_tuple_fp - { \s__fp_tuple \__fp_tuple_chk:w { } ; } + { \s__fp_tuple \__fp_tuple_chk:w { } \__fp_sep: } \cs_new:Npn \__fp_array_count:n #1 - { \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w {#1} ; } -\cs_new:Npn \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w #1 ; + { \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w {#1} \__fp_sep: } +\cs_new:Npn \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w #1 \__fp_sep: { \int_value:w \__fp_int_eval:w 0 - \__fp_tuple_count_loop:Nw #1 { ? \prg_break: } ; + \__fp_tuple_count_loop:Nw #1 { ? \prg_break: } \__fp_sep: \prg_break_point: \__fp_int_eval_end: } -\cs_new:Npn \__fp_tuple_count_loop:Nw #1#2; +\cs_new:Npn \__fp_tuple_count_loop:Nw #1#2\__fp_sep: { \use_none:n #1 + 1 \__fp_tuple_count_loop:Nw } \cs_new:Npn \__fp_if_type_fp:NTwFw #1 \s__fp #2 #3 \s__fp_stop {#2} \cs_new:Npn \__fp_array_if_all_fp:nTF #1 { - \__fp_array_if_all_fp_loop:w #1 { \s__fp \prg_break: } ; + \__fp_array_if_all_fp_loop:w #1 { \s__fp \prg_break: } \__fp_sep: \prg_break_point: \use_i:nn } -\cs_new:Npn \__fp_array_if_all_fp_loop:w #1#2 ; +\cs_new:Npn \__fp_array_if_all_fp_loop:w #1#2 \__fp_sep: { \__fp_if_type_fp:NTwFw #1 \__fp_array_if_all_fp_loop:w @@ -15433,7 +15584,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__fp_exp_after_tuple_o:w { \__fp_exp_after_tuple_f:nw { \exp_after:wN \exp_stop_f: } } \cs_new:Npn \__fp_exp_after_tuple_f:nw - #1 \s__fp_tuple \__fp_tuple_chk:w #2 ; + #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep: { \exp_after:wN \s__fp_tuple \exp_after:wN \__fp_tuple_chk:w @@ -15441,7 +15592,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp:w \exp_end_continue_f:w \__fp_exp_after_array_f:w #2 \s__fp_expr_stop \exp_after:wN } - \exp_after:wN ; + \exp_after:wN \__fp_sep: \exp:w \exp_end_continue_f:w #1 } \cs_new:Npn \__fp_exp_after_array_f:w @@ -15449,42 +15600,43 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_const:Nn \c__fp_leading_shift_int { - 5 0000 } \int_const:Nn \c__fp_middle_shift_int { 5 0000 * 9999 } \int_const:Nn \c__fp_trailing_shift_int { 5 0000 * 10000 } -\cs_new:Npn \__fp_pack:NNNNNw #1 #2#3#4#5 #6; { + #1#2#3#4#5 ; {#6} } +\cs_new:Npn \__fp_pack:NNNNNw #1 #2#3#4#5 #6\__fp_sep: + { + #1#2#3#4#5 \__fp_sep: {#6} } \int_const:Nn \c__fp_big_leading_shift_int { - 15 2374 } \int_const:Nn \c__fp_big_middle_shift_int { 15 2374 * 9999 } \int_const:Nn \c__fp_big_trailing_shift_int { 15 2374 * 10000 } -\cs_new:Npn \__fp_pack_big:NNNNNNw #1#2 #3#4#5#6 #7; - { + #1#2#3#4#5#6 ; {#7} } +\cs_new:Npn \__fp_pack_big:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep: + { + #1#2#3#4#5#6 \__fp_sep: {#7} } \int_const:Nn \c__fp_Bigg_leading_shift_int { - 20 0000 } \int_const:Nn \c__fp_Bigg_middle_shift_int { 20 0000 * 9999 } \int_const:Nn \c__fp_Bigg_trailing_shift_int { 20 0000 * 10000 } -\cs_new:Npn \__fp_pack_Bigg:NNNNNNw #1#2 #3#4#5#6 #7; - { + #1#2#3#4#5#6 ; {#7} } -\cs_new:Npn \__fp_pack_twice_four:wNNNNNNNN #1; #2#3#4#5 #6#7#8#9 - { #1 {#2#3#4#5} {#6#7#8#9} ; } -\cs_new:Npn \__fp_pack_eight:wNNNNNNNN #1; #2#3#4#5 #6#7#8#9 - { #1 {#2#3#4#5#6#7#8#9} ; } -\cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6; - { + #1 - 1 ; {#2#3#4#5} {#6} ; } -\cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6; +\cs_new:Npn \__fp_pack_Bigg:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep: + { + #1#2#3#4#5#6 \__fp_sep: {#7} } +\cs_new:Npn \__fp_pack_twice_four:wNNNNNNNN #1\__fp_sep: #2#3#4#5 #6#7#8#9 + { #1 {#2#3#4#5} {#6#7#8#9} \__fp_sep: } +\cs_new:Npn \__fp_pack_eight:wNNNNNNNN #1\__fp_sep: #2#3#4#5 #6#7#8#9 + { #1 {#2#3#4#5#6#7#8#9} \__fp_sep: } +\cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6\__fp_sep: + { + #1 - 1 \__fp_sep: {#2#3#4#5} {#6} \__fp_sep: } +\cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6\__fp_sep: { \if_meaning:w 2 #1 \__fp_basics_pack_high_carry:w \fi: - ; {#2#3#4#5} {#6} + \__fp_sep: {#2#3#4#5} {#6} } -\cs_new:Npn \__fp_basics_pack_high_carry:w \fi: ; #1 - { \fi: + 1 ; {1000} } -\cs_new:Npn \__fp_basics_pack_weird_low:NNNNw #1 #2#3#4 #5; +\cs_new:Npn \__fp_basics_pack_high_carry:w \fi: \__fp_sep: #1 + { \fi: + 1 \__fp_sep: {1000} } +\cs_new:Npn \__fp_basics_pack_weird_low:NNNNw #1 #2#3#4 #5\__fp_sep: { \if_meaning:w 2 #1 + 1 \fi: \__fp_int_eval_end: - #2#3#4; {#5} ; + #2#3#4\__fp_sep: {#5} \__fp_sep: } \cs_new:Npn \__fp_basics_pack_weird_high:NNNNNNNNw - 1 #1#2#3#4 #5#6#7#8 #9; { ; {#1#2#3#4} {#5#6#7#8} {#9} } + 1 #1#2#3#4 #5#6#7#8 #9\__fp_sep: { \__fp_sep: {#1#2#3#4} {#5#6#7#8} {#9} } \cs_new:Npn \__fp_decimate:nNnnnn #1 { \cs:w @@ -15498,17 +15650,17 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_end: } \cs_new:Npn \__fp_decimate_:Nnnnn #1 #2#3#4#5 - { #1 0 {#2#3} {#4#5} ; } + { #1 0 {#2#3} {#4#5} \__fp_sep: } \cs_new:Npn \__fp_decimate_tiny:Nnnnn #1 #2#3#4#5 - { #1 1 { 0000 0000 } { 0000 0000 } 0 #2#3#4#5 ; } + { #1 1 { 0000 0000 } { 0000 0000 } 0 #2#3#4#5 \__fp_sep: } \cs_new:Npn \__fp_tmp:w #1 #2 #3 { \cs_new:cpn { __fp_decimate_ #1 :Nnnnn } ##1 ##2##3##4##5 { \exp_after:wN ##1 \int_value:w - \exp_after:wN \__fp_round_digit:Nw #2 ; - \__fp_decimate_pack:nnnnnnnnnnw #3 ; + \exp_after:wN \__fp_round_digit:Nw #2 \__fp_sep: + \__fp_decimate_pack:nnnnnnnnnnw #3 \__fp_sep: } } \__fp_tmp:w {i} {\use_none:nnn #50}{ 0{#2}#3{#4}#5 } @@ -15532,18 +15684,19 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__fp_decimate_pack:nnnnnnw #1 #2#3#4#5#6 { {#1} {#2#3#4#5#6} } \cs_new:Npn \__fp_case_use:nw #1#2 \fi: #3 \s__fp { \fi: #1 \s__fp } -\cs_new:Npn \__fp_case_return:nw #1#2 \fi: #3 ; { \fi: #1 } -\cs_new:Npn \__fp_case_return_o:Nw #1#2 \fi: #3 \s__fp #4 ; +\cs_new:Npn \__fp_case_return:nw #1#2 \fi: #3 \__fp_sep: { \fi: #1 } +\cs_new:Npn \__fp_case_return_o:Nw #1#2 \fi: #3 \s__fp #4 \__fp_sep: { \fi: \exp_after:wN #1 } \cs_new:Npn \__fp_case_return_same_o:w #1 \fi: #2 \s__fp { \fi: \__fp_exp_after_o:w \s__fp } -\cs_new:Npn \__fp_case_return_o:Nww #1#2 \fi: #3 \s__fp #4 ; #5 ; +\cs_new:Npn \__fp_case_return_o:Nww #1#2 \fi: #3 \s__fp #4 \__fp_sep: #5 \__fp_sep: { \fi: \exp_after:wN #1 } -\cs_new:Npn \__fp_case_return_i_o:ww #1 \fi: #2 \s__fp #3 ; \s__fp #4 ; - { \fi: \__fp_exp_after_o:w \s__fp #3 ; } -\cs_new:Npn \__fp_case_return_ii_o:ww #1 \fi: #2 \s__fp #3 ; +\cs_new:Npn \__fp_case_return_i_o:ww + #1 \fi: #2 \s__fp #3 \__fp_sep: \s__fp #4 \__fp_sep: + { \fi: \__fp_exp_after_o:w \s__fp #3 \__fp_sep: } +\cs_new:Npn \__fp_case_return_ii_o:ww #1 \fi: #2 \s__fp #3 \__fp_sep: { \fi: \__fp_exp_after_o:w } -\prg_new_conditional:Npnn \__fp_int:w \s__fp \__fp_chk:w #1 #2 #3 #4; +\prg_new_conditional:Npnn \__fp_int:w \s__fp \__fp_chk:w #1 #2 #3 #4\__fp_sep: { TF , T , F , p } { \if_case:w #1 \exp_stop_f: @@ -15562,26 +15715,26 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__fp_small_int:wTF \s__fp \__fp_chk:w #1#2 { \if_case:w #1 \exp_stop_f: - \__fp_case_return:nw { \__fp_small_int_true:wTF 0 ; } + \__fp_case_return:nw { \__fp_small_int_true:wTF 0 \__fp_sep: } \or: \exp_after:wN \__fp_small_int_normal:NnwTF \or: \__fp_case_return:nw { \exp_after:wN \__fp_small_int_true:wTF \int_value:w - \if_meaning:w 2 #2 - \fi: 1 0000 0000 ; + \if_meaning:w 2 #2 - \fi: 1 0000 0000 \__fp_sep: } \else: \__fp_case_return:nw \use_ii:nn \fi: #2 } -\cs_new:Npn \__fp_small_int_true:wTF #1; #2#3 { #2 {#1} } -\cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3; +\cs_new:Npn \__fp_small_int_true:wTF #1\__fp_sep: #2#3 { #2 {#1} } +\cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3\__fp_sep: { \__fp_decimate:nNnnnn { \c__fp_prec_int - #2 } \__fp_small_int_test:NnnwNw #3 #1 } -\cs_new:Npn \__fp_small_int_test:NnnwNw #1#2#3#4; #5 +\cs_new:Npn \__fp_small_int_test:NnnwNw #1#2#3#4\__fp_sep: #5 { \if_meaning:w 0 #1 \exp_after:wN \__fp_small_int_true:wTF @@ -15591,7 +15744,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: #3 \fi: - \exp_after:wN ; + \exp_after:wN \__fp_sep: \else: \exp_after:wN \use_ii:nn \fi: @@ -15647,19 +15800,21 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_protected:Npn \__fp_trap_invalid_operation_set:N #1 { \exp_args:Nno \use:n - { \cs_set:Npn \__fp_invalid_operation:nnw ##1##2##3; } + { \cs_set:Npn \__fp_invalid_operation:nnw ##1##2##3\__fp_sep: } { #1 - \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3; } } { } + \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3\__fp_sep: } } { } \flag_ensure_raised:N \l_fp_invalid_operation_flag ##1 } \exp_args:Nno \use:n - { \cs_set:Npn \__fp_invalid_operation_o:Nww ##1##2; ##3; } + { \cs_set:Npn \__fp_invalid_operation_o:Nww ##1##2\__fp_sep: ##3\__fp_sep: } { #1 \__fp_error:nffn { invalid-ii } - { \fp_to_tl:n { ##2; } } { \fp_to_tl:n { ##3; } } {##1} + { \fp_to_tl:n { ##2\__fp_sep: } } + { \fp_to_tl:n { ##3\__fp_sep: } } + {##1} \flag_ensure_raised:N \l_fp_invalid_operation_flag \exp_after:wN \c_nan_fp } @@ -15681,19 +15836,23 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_protected:Npn \__fp_trap_division_by_zero_set:N #1 { \exp_args:Nno \use:n - { \cs_set:Npn \__fp_division_by_zero_o:Nnw ##1##2##3; } + { \cs_set:Npn \__fp_division_by_zero_o:Nnw ##1##2##3\__fp_sep: } { #1 - \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3; } } { } + \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3\__fp_sep: } } { } \flag_ensure_raised:N \l_fp_division_by_zero_flag \exp_after:wN ##1 } \exp_args:Nno \use:n - { \cs_set:Npn \__fp_division_by_zero_o:NNww ##1##2##3; ##4; } + { + \cs_set:Npn \__fp_division_by_zero_o:NNww ##1##2##3\__fp_sep: ##4\__fp_sep: + } { #1 \__fp_error:nffn { zero-div-ii } - { \fp_to_tl:n { ##3; } } { \fp_to_tl:n { ##4; } } {##2} + { \fp_to_tl:n { ##3\__fp_sep: } } + { \fp_to_tl:n { ##4\__fp_sep: } } + {##2} \flag_ensure_raised:N \l_fp_division_by_zero_flag \exp_after:wN ##1 } @@ -15717,23 +15876,23 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_protected:Npn \__fp_trap_overflow_set:NnNn #1#2#3#4 { \exp_args:Nno \use:n - { \cs_set:cpn { __fp_ #2 :w } \s__fp \__fp_chk:w ##1##2##3; } + { \cs_set:cpn { __fp_ #2 :w } \s__fp \__fp_chk:w ##1##2##3\__fp_sep: } { #1 \__fp_error:nffn { flow \if_meaning:w 1 ##1 -to \fi: } - { \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3; } } + { \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3\__fp_sep: } } { \token_if_eq_meaning:NNF 0 ##2 { - } #4 } {#2} \flag_ensure_raised:c { l_fp_#2_flag } #3 ##2 } } -\cs_new:Npn \__fp_invalid_operation:nnw #1#2#3; { } -\cs_new:Npn \__fp_invalid_operation_o:Nww #1#2; #3; { } +\cs_new:Npn \__fp_invalid_operation:nnw #1#2#3\__fp_sep: { } +\cs_new:Npn \__fp_invalid_operation_o:Nww #1#2\__fp_sep: #3\__fp_sep: { } \cs_new:Npn \__fp_invalid_operation_tl_o:ff #1 #2 { } -\cs_new:Npn \__fp_division_by_zero_o:Nnw #1#2#3; { } -\cs_new:Npn \__fp_division_by_zero_o:NNww #1#2#3; #4; { } +\cs_new:Npn \__fp_division_by_zero_o:Nnw #1#2#3\__fp_sep: { } +\cs_new:Npn \__fp_division_by_zero_o:NNww #1#2#3\__fp_sep: #4\__fp_sep: { } \cs_new:Npn \__fp_overflow:w { } \cs_new:Npn \__fp_underflow:w { } \fp_trap:nn { invalid_operation } { error } @@ -15871,7 +16030,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \c_zero_int } \cs_new_eq:NN \__fp_round:NNN \__fp_round_to_nearest:NNN -\cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4; +\cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4\__fp_sep: { \exp_after:wN \__fp_round:NNN \exp_after:wN #1 @@ -15885,9 +16044,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \fi: #3 - ; + \__fp_sep: } -\cs_new:Npn \__fp_round_digit:Nw #1 #2; +\cs_new:Npn \__fp_round_digit:Nw #1 #2\__fp_sep: { \if_int_odd:w \if_meaning:w 0 #1 1 \else: \if_meaning:w 5 #1 1 \else: @@ -15947,7 +16106,8 @@ Type H <return> for immediate help}\def~{\errmessage{% } \exp_after:wN \c_nan_fp } -\cs_new:Npn \__fp_round:Nwww #1#2 ; #3 ; \s__fp \__fp_chk:w #4#5#6 ; #7 @ +\cs_new:Npn \__fp_round:Nwww + #1#2 \__fp_sep: #3 \__fp_sep: \s__fp \__fp_chk:w #4#5#6 \__fp_sep: #7 @ { \cs_if_eq:NNTF #1 \__fp_round_to_nearest:NNN { @@ -15960,7 +16120,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \if_case:w #5 \exp_stop_f: _pinf \or: \else: _ninf \fi: \fi: :NNN } - #2 ; #3 ; + #2 \__fp_sep: #3 \__fp_sep: } { \__fp_error:nnnn { num-args } { round () } { 1 } { 3 } @@ -15984,11 +16144,11 @@ Type H <return> for immediate help}\def~{\errmessage{% } } } -\cs_new:Npn \__fp_round:Nww #1#2 ; #3 ; +\cs_new:Npn \__fp_round:Nww #1#2 \__fp_sep: #3 \__fp_sep: { - \__fp_small_int:wTF #3; { \__fp_round:Nwn #1#2; } + \__fp_small_int:wTF #3\__fp_sep: { \__fp_round:Nwn #1#2\__fp_sep: } { - \if:w 3 \__fp_kind:w #3 ; + \if:w 3 \__fp_kind:w #3 \__fp_sep: \exp_after:wN \use_i:nn \else: \exp_after:wN \use_ii:nn @@ -15997,11 +16157,11 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_invalid_operation_tl_o:ff { \__fp_round_name_from_cs:N #1 } - { \__fp_array_to_clist:n { #2; #3; } } + { \__fp_array_to_clist:n { #2\__fp_sep: #3\__fp_sep: } } } } } -\cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4; #5 +\cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: #5 { \if_meaning:w 1 #2 \exp_after:wN \__fp_round_normal:NwNNnw @@ -16010,14 +16170,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \exp_after:wN \__fp_exp_after_o:w \fi: - \s__fp \__fp_chk:w #2#3#4; + \s__fp \__fp_chk:w #2#3#4\__fp_sep: } -\cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5; +\cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5\__fp_sep: { \__fp_decimate:nNnnnn { \c__fp_prec_int - #4 - #2 } \__fp_round_normal:NnnwNNnn #5 #1 #3 {#4} {#2} } -\cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4; #5#6 +\cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4\__fp_sep: #5#6 { \exp_after:wN \__fp_round_normal:NNwNnn \int_value:w \__fp_int_eval:w @@ -16035,7 +16195,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \use_none:nnnnnnn #3 #1 \__fp_int_eval_end: - 0000 0000 0000 0000 ; #6 + 0000 0000 0000 0000 \__fp_sep: #6 } \cs_new:Npn \__fp_round_pack:Nw #1 { \if_meaning:w 2 #1 + 1 \fi: \__fp_int_eval_end: } @@ -16048,14 +16208,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_round_normal_end:wwNnn - ; #2 + \__fp_sep: #2 } -\cs_new:Npn \__fp_round_normal_end:wwNnn #1;#2;#3#4#5 +\cs_new:Npn \__fp_round_normal_end:wwNnn #1\__fp_sep:#2\__fp_sep:#3#4#5 { \exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w - \__fp_sanitize:Nw #3 #4 ; #1 ; + \__fp_sanitize:Nw #3 #4 \__fp_sep: #1 \__fp_sep: } -\cs_new:Npn \__fp_round_special:NwwNnn #1#2;#3;#4#5#6 +\cs_new:Npn \__fp_round_special:NwwNnn #1#2\__fp_sep:#3\__fp_sep:#4#5#6 { \if_meaning:w 0 #1 \__fp_case_return:nw @@ -16066,12 +16226,12 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \__fp_int_eval:w 1 \if_meaning:w 1 #1 -#6 \else: +#5 \fi: \fi: - ; + \__fp_sep: } -\cs_new:Npn \__fp_round_special_aux:Nw #1#2; +\cs_new:Npn \__fp_round_special_aux:Nw #1#2\__fp_sep: { \exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w - \__fp_sanitize:Nw #1#2; {1000}{0000}{0000}{0000}; + \__fp_sanitize:Nw #1#2\__fp_sep: {1000}{0000}{0000}{0000}\__fp_sep: } %% File: l3fp-parse.dtx \int_const:Nn \c__fp_prec_func_int { 16 } @@ -16091,7 +16251,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_const:Nn \c__fp_prec_end_int { 0 } \cs_new:Npn \__fp_parse_expand:w #1 { \exp_end_continue_f:w #1 } \cs_new:Npn \__fp_parse_return_semicolon:w - #1 \fi: \__fp_parse_expand:w { \fi: ; #1 } + #1 \fi: \__fp_parse_expand:w { \fi: \__fp_sep: #1 } \cs_set_protected:Npn \__fp_tmp:w #1 #2 #3 { \cs_new:cpn { __fp_parse_digits_ #1 :N } ##1 @@ -16104,14 +16264,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_parse_expand:w } } -\__fp_tmp:w {vii} \__fp_parse_digits_vi:N { 0000000 ; 7 } -\__fp_tmp:w {vi} \__fp_parse_digits_v:N { 000000 ; 6 } -\__fp_tmp:w {v} \__fp_parse_digits_iv:N { 00000 ; 5 } -\__fp_tmp:w {iv} \__fp_parse_digits_iii:N { 0000 ; 4 } -\__fp_tmp:w {iii} \__fp_parse_digits_ii:N { 000 ; 3 } -\__fp_tmp:w {ii} \__fp_parse_digits_i:N { 00 ; 2 } -\__fp_tmp:w {i} \__fp_parse_digits_:N { 0 ; 1 } -\cs_new:Npn \__fp_parse_digits_:N { ; ; 0 } +\__fp_tmp:w {vii} \__fp_parse_digits_vi:N { 0000000 \__fp_sep: 7 } +\__fp_tmp:w {vi} \__fp_parse_digits_v:N { 000000 \__fp_sep: 6 } +\__fp_tmp:w {v} \__fp_parse_digits_iv:N { 00000 \__fp_sep: 5 } +\__fp_tmp:w {iv} \__fp_parse_digits_iii:N { 0000 \__fp_sep: 4 } +\__fp_tmp:w {iii} \__fp_parse_digits_ii:N { 000 \__fp_sep: 3 } +\__fp_tmp:w {ii} \__fp_parse_digits_i:N { 00 \__fp_sep: 2 } +\__fp_tmp:w {i} \__fp_parse_digits_:N { 0 \__fp_sep: 1 } +\cs_new:Npn \__fp_parse_digits_:N { \__fp_sep: \__fp_sep: 0 } \cs_new:Npn \__fp_parse_one:Nw #1 #2 { \if_catcode:w \scan_stop: \exp_not:N #2 @@ -16211,26 +16371,26 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_parse_one_register_auxii:wwwNw } \exp_not:N \exp_after:wN { \exp_not:N \tex_the:D #1 } - ; \exp_not:N \__fp_parse_one_register_dim:ww - \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_mu:www - . \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_int:www + \__fp_sep: \exp_not:N \__fp_parse_one_register_dim:ww + \tl_to_str:n { pt } \__fp_sep: \exp_not:N \__fp_parse_one_register_mu:www + . \tl_to_str:n { pt } \__fp_sep: \exp_not:N \__fp_parse_one_register_int:www \s__fp_stop } \exp_args:Nno \use:nn { \cs_new:Npn \__fp_parse_one_register_auxii:wwwNw #1 . #2 } - { \tl_to_str:n { pt } #3 ; #4#5 \s__fp_stop } - { #4 #1.#2; } + { \tl_to_str:n { pt } #3 \__fp_sep: #4#5 \s__fp_stop } + { #4 #1.#2\__fp_sep: } \exp_args:Nno \use:nn { \cs_new:Npn \__fp_parse_one_register_mu:www #1 } - { \tl_to_str:n { mu } ; #2 ; } - { \__fp_parse_one_register_dim:ww #1 ; } -\cs_new:Npn \__fp_parse_one_register_int:www #1; #2.; #3; + { \tl_to_str:n { mu } \__fp_sep: #2 \__fp_sep: } + { \__fp_parse_one_register_dim:ww #1 \__fp_sep: } +\cs_new:Npn \__fp_parse_one_register_int:www #1\__fp_sep: #2.\__fp_sep: #3\__fp_sep: { \__fp_parse:n { #1 e #3 } } -\cs_new:Npn \__fp_parse_one_register_dim:ww #1; #2; +\cs_new:Npn \__fp_parse_one_register_dim:ww #1\__fp_sep: #2\__fp_sep: { \exp_after:wN \__fp_from_dim_test:ww \int_value:w #2 \exp_after:wN , - \int_value:w \dim_to_decimal_in_sp:n { #1 pt } ; + \int_value:w \dim_to_decimal_in_sp:n { #1 pt } \__fp_sep: } \cs_new:Npn \__fp_parse_one_register_special:N #1 { @@ -16263,11 +16423,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_parse_one_register_wd:Nw #4 \__fp_parse_expand:w e } -\cs_new:Npn \__fp_parse_one_register_wd:Nw #1#2 ; +\cs_new:Npn \__fp_parse_one_register_wd:Nw #1#2 \__fp_sep: { \exp_after:wN \__fp_from_dim_test:ww \exp_after:wN 0 \exp_after:wN , - \int_value:w \dim_to_decimal_in_sp:n { #1 #2 } ; + \int_value:w \dim_to_decimal_in_sp:n { #1 #2 } \__fp_sep: } \cs_new:Npn \__fp_parse_one_digit:NN #1 { @@ -16300,7 +16460,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_word:Nw #1#2; +\cs_new:Npn \__fp_parse_word:Nw #1#2\__fp_sep: { \cs_if_exist_use:cF { __fp_parse_word_#2:N } { @@ -16405,7 +16565,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npn \__fp_parse_zero: { - \exp_after:wN ; \exp_after:wN 1 + \exp_after:wN \__fp_sep: \exp_after:wN 1 \int_value:w \__fp_parse_exponent:N } \cs_new:Npn \__fp_parse_small:N #1 @@ -16417,7 +16577,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_parse_digits_vii:N \exp:w \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_small_leading:wwNN 1 #1 ; #2; #3 #4 +\cs_new:Npn \__fp_parse_small_leading:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4 { #1 #2 \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww @@ -16434,7 +16594,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_small_trailing:wwNN 1 #1 ; #2; #3 #4 +\cs_new:Npn \__fp_parse_small_trailing:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4 { #1 #2 \if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f: @@ -16447,19 +16607,20 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_pack_trailing:NNNNNNww #1 #2 #3#4#5#6 #7; #8 ; +\cs_new:Npn \__fp_parse_pack_trailing:NNNNNNww + #1 #2 #3#4#5#6 #7\__fp_sep: #8 \__fp_sep: { \if_meaning:w 2 #2 + 1 \fi: - ; #8 + #1 ; {#3#4#5#6} {#7}; + \__fp_sep: #8 + #1 \__fp_sep: {#3#4#5#6} {#7}\__fp_sep: } -\cs_new:Npn \__fp_parse_pack_leading:NNNNNww #1 #2#3#4#5 #6; #7; +\cs_new:Npn \__fp_parse_pack_leading:NNNNNww #1 #2#3#4#5 #6\__fp_sep: #7\__fp_sep: { + #7 \if_meaning:w 2 #1 \__fp_parse_pack_carry:w \fi: - ; 0 {#2#3#4#5} {#6} + \__fp_sep: 0 {#2#3#4#5} {#6} } -\cs_new:Npn \__fp_parse_pack_carry:w \fi: ; 0 #1 - { \fi: + 1 ; 0 {1000} } +\cs_new:Npn \__fp_parse_pack_carry:w \fi: \__fp_sep: 0 #1 + { \fi: + 1 \__fp_sep: 0 {1000} } \cs_new:Npn \__fp_parse_large:N #1 { \exp_after:wN \__fp_parse_large_leading:wwNN @@ -16467,7 +16628,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_parse_digits_vii:N \exp:w \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 ; #2; #3 #4 +\cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4 { + \c__fp_half_prec_int - #3 \exp_after:wN \__fp_parse_pack_leading:NNNNNww @@ -16497,7 +16658,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_large_trailing:wwNN 1 #1 ; #2; #3 #4 +\cs_new:Npn \__fp_parse_large_trailing:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4 { \if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f: \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww @@ -16552,9 +16713,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_round_after:wN #1; #2 +\cs_new:Npn \__fp_parse_round_after:wN #1\__fp_sep: #2 { - + #2 \exp_after:wN ; + + #2 \exp_after:wN \__fp_sep: \int_value:w \__fp_int_eval:w #1 + \__fp_parse_exponent:N } \cs_new:Npn \__fp_parse_small_round:NN #1#2 @@ -16604,7 +16765,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_parse_expand:w } -\cs_new:Npn \__fp_parse_large_round_aux:wNN #1 ; #2 #3 +\cs_new:Npn \__fp_parse_large_round_aux:wNN #1 \__fp_sep: #2 #3 { + #2 \exp_after:wN \__fp_parse_round_after:wN @@ -16614,14 +16775,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_parse_round_loop:N \exp:w \exp_after:wN \__fp_parse_expand:w \else: - \exp_after:wN ; + \exp_after:wN \__fp_sep: \exp_after:wN 0 \exp_after:wN #3 \fi: } \cs_new:Npn \__fp_parse_exponent:Nw #1 #2 \__fp_parse_expand:w { - \exp_after:wN ; + \exp_after:wN \__fp_sep: \int_value:w #2 \__fp_parse_exponent:N #1 } \cs_new:Npn \__fp_parse_exponent:N #1 @@ -16639,7 +16800,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \if_int_compare:w \if_catcode:w \scan_stop: \exp_not:N #2 0 \else: `#2 \fi: > `9 \exp_stop_f: - 0 \exp_after:wN ; \exp_after:wN #1 + 0 \exp_after:wN \__fp_sep: \exp_after:wN #1 \else: \exp_after:wN \__fp_parse_exponent_sign:N \fi: @@ -16665,7 +16826,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_parse_exponent_keep:NTF #1 { \__fp_parse_return_semicolon:w #1 } { - \exp_after:wN ; + \exp_after:wN \__fp_sep: \exp:w } \fi: @@ -16722,12 +16883,12 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npn \__fp_parse_apply_unary:NNNwN #1#2#3#4@#5 { - \__fp_parse_apply_unary_chk:NwNw #4 @ ; . \s__fp_stop + \__fp_parse_apply_unary_chk:NwNw #4 @ \__fp_sep: . \s__fp_stop \__fp_parse_apply_unary_type:NNN #3 #2 #4 @ \exp:w \exp_end_continue_f:w #5 #1 } -\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 ; #3#4 \s__fp_stop +\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 \__fp_sep: #3#4 \s__fp_stop { \if_meaning:w @ #3 \else: \token_if_eq_meaning:NNTF . #3 @@ -16841,7 +17002,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:cpn { __fp_parse_word_#1:N } { \__fp_exp_after_f:nw { \__fp_parse_infix:NN } - \s__fp \__fp_chk:w 10 #2 ; + \s__fp \__fp_chk:w 10 #2 \__fp_sep: } } \__fp_tmp:w {pt} { {1} {1000} {0000} {0000} {0000} } @@ -16861,7 +17022,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__fp_from_dim_test:ww \exp_after:wN 0 \exp_after:wN , - \int_value:w \dim_to_decimal_in_sp:n { 1 #1 } \exp_after:wN ; + \int_value:w \dim_to_decimal_in_sp:n { 1 #1 } \exp_after:wN \__fp_sep: \exp:w \exp_end_continue_f:w \__fp_parse_infix:NN } } @@ -16950,7 +17111,7 @@ Type H <return> for immediate help}\def~{\errmessage{% #2 \__fp_invalid_operation_o:Nww #1 } -\cs_new:Npn \__fp_binary_type_o:Nww #1 #2#3 ; #4 +\cs_new:Npn \__fp_binary_type_o:Nww #1 #2#3 \__fp_sep: #4 { \exp_after:wN \__fp_parse_apply_binary_chk:NN \cs:w @@ -16961,9 +17122,9 @@ Type H <return> for immediate help}\def~{\errmessage{% _o:ww \cs_end: #1 - #2 #3 ; #4 + #2 #3 \__fp_sep: #4 } -\cs_new:Npn \__fp_binary_rev_type_o:Nww #1 #2#3 ; #4#5 ; +\cs_new:Npn \__fp_binary_rev_type_o:Nww #1 #2#3 \__fp_sep: #4#5 \__fp_sep: { \exp_after:wN \__fp_parse_apply_binary_chk:NN \cs:w @@ -16974,12 +17135,12 @@ Type H <return> for immediate help}\def~{\errmessage{% _o:ww \cs_end: #1 - #4 #5 ; #2 #3 ; + #4 #5 \__fp_sep: #2 #3 \__fp_sep: } -\cs_new:Npn \__fp_parse_infix_after_operand:NwN #1 #2; +\cs_new:Npn \__fp_parse_infix_after_operand:NwN #1 #2\__fp_sep: { \__fp_exp_after_f:nw { \__fp_parse_infix:NN #1 } - #2; + #2\__fp_sep: } \cs_new:Npn \__fp_parse_infix:NN #1 #2 { @@ -17103,7 +17264,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN #1 \exp:w \exp_end_continue_f:w \__fp_exp_after_tuple_f:nw { } - \s__fp_tuple \__fp_tuple_chk:w { #2 #4 } ; + \s__fp_tuple \__fp_tuple_chk:w { #2 #4 } \__fp_sep: #5 #1 } \cs_set_protected:Npn \__fp_tmp:w #1#2#3#4 @@ -17288,14 +17449,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: #1 #8 #9 } -\cs_new:Npn \__fp_parse_apply_compare_aux:NNwN #1 #2 #3; #4 +\cs_new:Npn \__fp_parse_apply_compare_aux:NNwN #1 #2 #3\__fp_sep: #4 { \if_meaning:w \__fp_parse_compare:NNNNNNN #4 \exp_after:wN \__fp_parse_continue_compare:NNwNN \exp_after:wN #1 \exp_after:wN #2 \exp:w \exp_end_continue_f:w - \__fp_exp_after_o:w #3; + \__fp_exp_after_o:w #3\__fp_sep: \exp:w \exp_end_continue_f:w \else: \exp_after:wN \__fp_parse_continue:NwN @@ -17315,7 +17476,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_error:nffn { bad-args } {#1} - { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#3} ; } } + { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#3} \__fp_sep: } } { } \exp_after:wN \c_nan_fp } @@ -17330,11 +17491,11 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_error:nffn { bad-args } {#2} - { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#4} ; } } + { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#4} \__fp_sep: } } { } \exp_after:wN \c_nan_fp } -\cs_new:Npn \__fp_parse_function_one_two_aux:nnw #1#2 #3; #4 +\cs_new:Npn \__fp_parse_function_one_two_aux:nnw #1#2 #3\__fp_sep: #4 { \__fp_if_type_fp:NTwFw #4 { } @@ -17346,52 +17507,52 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_parse_function_one_two_error_o:w } \s__fp_stop - \__fp_parse_function_one_two_auxii:nnw {#1} {#2} #3; #4 + \__fp_parse_function_one_two_auxii:nnw {#1} {#2} #3\__fp_sep: #4 } -\cs_new:Npn \__fp_parse_function_one_two_auxii:nnw #1#2#3; #4; #5 +\cs_new:Npn \__fp_parse_function_one_two_auxii:nnw #1#2#3\__fp_sep: #4\__fp_sep: #5 { \if_meaning:w @ #5 \else: \exp_after:wN \__fp_parse_function_one_two_error_o:w \fi: - \use_ii:nn {#1} { \use_none:n #2 } #3; #4; #5 + \use_ii:nn {#1} { \use_none:n #2 } #3\__fp_sep: #4\__fp_sep: #5 } -\cs_new:Npn \__fp_tuple_map_o:nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 ; +\cs_new:Npn \__fp_tuple_map_o:nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep: { \exp_after:wN \s__fp_tuple \exp_after:wN \__fp_tuple_chk:w \exp_after:wN { \exp:w \exp_end_continue_f:w \__fp_tuple_map_loop_o:nw {#1} #2 - { \s__fp \prg_break: } ; + { \s__fp \prg_break: } \__fp_sep: \prg_break_point: - \exp_after:wN } \exp_after:wN ; + \exp_after:wN } \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_tuple_map_loop_o:nw #1#2#3 ; +\cs_new:Npn \__fp_tuple_map_loop_o:nw #1#2#3 \__fp_sep: { \use_none:n #2 - #1 #2 #3 ; + #1 #2 #3 \__fp_sep: \exp:w \exp_end_continue_f:w \__fp_tuple_map_loop_o:nw {#1} } \cs_new:Npn \__fp_tuple_mapthread_o:nww #1 - \s__fp_tuple \__fp_tuple_chk:w #2 ; - \s__fp_tuple \__fp_tuple_chk:w #3 ; + \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep: + \s__fp_tuple \__fp_tuple_chk:w #3 \__fp_sep: { \exp_after:wN \s__fp_tuple \exp_after:wN \__fp_tuple_chk:w \exp_after:wN { \exp:w \exp_end_continue_f:w \__fp_tuple_mapthread_loop_o:nw {#1} - #2 { \s__fp \prg_break: } ; @ - #3 { \s__fp \prg_break: } ; + #2 { \s__fp \prg_break: } \__fp_sep: @ + #3 { \s__fp \prg_break: } \__fp_sep: \prg_break_point: - \exp_after:wN } \exp_after:wN ; + \exp_after:wN } \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_tuple_mapthread_loop_o:nw #1#2#3 ; #4 @ #5#6 ; +\cs_new:Npn \__fp_tuple_mapthread_loop_o:nw #1#2#3 \__fp_sep: #4 @ #5#6 \__fp_sep: { \use_none:n #2 \use_none:n #5 - #1 #2 #3 ; #5 #6 ; + #1 #2 #3 \__fp_sep: #5 #6 \__fp_sep: \exp:w \exp_end_continue_f:w \__fp_tuple_mapthread_loop_o:nw {#1} #4 @ } @@ -17438,8 +17599,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__kernel_tl_gset:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } } \cs_new_protected:Npn \fp_const:Nn #1#2 { \tl_const:Ne #1 { \exp_not:f { \__fp_parse:n {#2} } } } -\cs_generate_variant:Nn \fp_set:Nn {c} -\cs_generate_variant:Nn \fp_gset:Nn {c} +\cs_generate_variant:Nn \fp_set:Nn { NV , c , cV } +\cs_generate_variant:Nn \fp_gset:Nn { NV , c , cV } \cs_generate_variant:Nn \fp_const:Nn {c} \cs_new_eq:NN \fp_set_eq:NN \tl_set_eq:NN \cs_new_eq:NN \fp_gset_eq:NN \tl_gset_eq:NN @@ -17479,9 +17640,9 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_show_validate:nn { #1 } { - \s__fp \__fp_chk:w ??? ;~ or \iow_newline: - \s__fp_tuple \__fp_tuple_chk:w ? ;~ or \iow_newline: - \s__fp_symbolic \__fp_symbolic_chk:w ? , ? ; + \s__fp \__fp_chk:w ??? \__fp_sep: or \iow_newline: + \s__fp_tuple \__fp_tuple_chk:w ? \__fp_sep: or \iow_newline: + \s__fp_symbolic \__fp_symbolic_chk:w ? , ? \__fp_sep: } } \cs_new:Npn \__fp_show_validate_aux:n #1 @@ -17497,46 +17658,49 @@ Type H <return> for immediate help}\def~{\errmessage{% { \s__fp } { \__fp_show_validate:w #1 \s__fp - \__fp_chk:w ??? ; \s__fp_stop + \__fp_chk:w ??? \__fp_sep: \s__fp_stop } { \s__fp_tuple } { \__fp_tuple_show_validate:w #1 - \s__fp_tuple \__fp_tuple_chk:w ?? ; \s__fp_stop + \s__fp_tuple \__fp_tuple_chk:w ?? \__fp_sep: \s__fp_stop } { \s__fp_symbolic } { \__fp_symbolic_show_validate:w #1 - \s__fp_symbolic \__fp_symbolic_chk:w ? , ?? ; \s__fp_stop + \s__fp_symbolic \__fp_symbolic_chk:w ? , ?? \__fp_sep: \s__fp_stop } } { #2 } } } \cs_new:Npn \__fp_show_validate:w - #1 \s__fp \__fp_chk:w #2#3#4#5 ; #6 \s__fp_stop + #1 \s__fp \__fp_chk:w #2#3#4#5 \__fp_sep: #6 \s__fp_stop { \str_if_eq:nnF { #2 } {?} { \token_if_eq_meaning:NNTF #2 1 - { \s__fp \__fp_chk:w #2 #3 { #4 } #5 ; } - { \s__fp \__fp_chk:w #2 #3 #4 #5 ; } + { \s__fp \__fp_chk:w #2 #3 { #4 } #5 \__fp_sep: } + { \s__fp \__fp_chk:w #2 #3 #4 #5 \__fp_sep: } \__fp_show_validate_aux:n { #6 } } } \cs_new:Npn \__fp_tuple_show_validate:w - #1 \s__fp_tuple \__fp_tuple_chk:w #2#3 ; #4 \s__fp_stop + #1 \s__fp_tuple \__fp_tuple_chk:w #2#3 \__fp_sep: #4 \s__fp_stop { \str_if_eq:nnF { #2 } {?} - { \s__fp_tuple \__fp_tuple_chk:w { \__fp_show_validate_aux:n { #2 } } ; } + { + \s__fp_tuple \__fp_tuple_chk:w { \__fp_show_validate_aux:n { #2 } } + \__fp_sep: + } } \cs_new:Npn \__fp_symbolic_show_validate:w - #1 \s__fp_symbolic \__fp_symbolic_chk:w #2 , #3#4 ; #5 \s__fp_stop + #1 \s__fp_symbolic \__fp_symbolic_chk:w #2 , #3#4 \__fp_sep: #5 \s__fp_stop { \str_if_eq:nnF { #2 } {?} { \s__fp_symbolic \__fp_symbolic_chk:w \exp_not:n { #2 } , - { \__fp_show_validate_aux:n { #3 } }; + { \__fp_show_validate_aux:n { #3 } }\__fp_sep: \__fp_show_validate_aux:n { #5 } } } @@ -17572,7 +17736,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_compare_return:w \exp:w \exp_end_continue_f:w \__fp_parse:n {#1} } -\cs_new:Npn \__fp_compare_return:w #1#2#3; +\cs_new:Npn \__fp_compare_return:w #1#2#3\__fp_sep: { \if_charcode:w 0 \__fp_if_type_fp:NTwFw @@ -17594,12 +17758,12 @@ Type H <return> for immediate help}\def~{\errmessage{% \prg_return_false: \fi: } -\cs_new:Npn \__fp_compare_aux:wn #1; #2 +\cs_new:Npn \__fp_compare_aux:wn #1\__fp_sep: #2 { \exp_after:wN \__fp_compare_back_any:ww - \exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1; + \exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1\__fp_sep: } -\cs_new:Npn \__fp_compare_back:ww #1#2; #3#4; +\cs_new:Npn \__fp_compare_back:ww #1#2\__fp_sep: #3#4\__fp_sep: { \cs:w __fp @@ -17608,9 +17772,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_type_from_scan:N #3 :ww \cs_end: - #1#2; #3#4; + #1#2\__fp_sep: #3#4\__fp_sep: } -\cs_new:Npn \__fp_compare_back_any:ww #1#2; #3 +\cs_new:Npn \__fp_compare_back_any:ww #1#2\__fp_sep: #3 { \__fp_if_type_fp:NTwFw #1 { \__fp_if_type_fp:NTwFw #3 \use_i:nn \s__fp \use_ii:nn \s__fp_stop } @@ -17625,11 +17789,11 @@ Type H <return> for immediate help}\def~{\errmessage{% :ww \cs_end: } - #1#2 ; #3 + #1#2 \__fp_sep: #3 } \cs_new:Npn \__fp_bcmp:ww - \s__fp \__fp_chk:w #1 #2 #3; - \s__fp \__fp_chk:w #4 #5 #6; + \s__fp \__fp_chk:w #1 #2 #3\__fp_sep: + \s__fp \__fp_chk:w #4 #5 #6\__fp_sep: { \int_value:w \if_meaning:w 3 #1 \exp_after:wN \__fp_compare_nan:w \fi: @@ -17638,7 +17802,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \if_meaning:w #2 #5 \if_meaning:w #1 #4 \if_meaning:w 1 #1 - \__fp_compare_npos:nwnw #6; #3; + \__fp_compare_npos:nwnw #6\__fp_sep: #3\__fp_sep: \else: 0 \fi: @@ -17655,36 +17819,36 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_stop_f: } \cs_new:Npn \__fp_compare_nan:w #1 \fi: \exp_stop_f: { 2 \exp_stop_f: } -\cs_new:Npn \__fp_compare_back_tuple:ww #1; #2; { 2 } -\cs_new:Npn \__fp_tuple_compare_back:ww #1; #2; { 2 } +\cs_new:Npn \__fp_compare_back_tuple:ww #1\__fp_sep: #2\__fp_sep: { 2 } +\cs_new:Npn \__fp_tuple_compare_back:ww #1\__fp_sep: #2\__fp_sep: { 2 } \cs_new:Npn \__fp_tuple_compare_back_tuple:ww - \s__fp_tuple \__fp_tuple_chk:w #1; - \s__fp_tuple \__fp_tuple_chk:w #2; + \s__fp_tuple \__fp_tuple_chk:w #1\__fp_sep: + \s__fp_tuple \__fp_tuple_chk:w #2\__fp_sep: { \int_compare:nNnTF { \__fp_array_count:n {#1} } = { \__fp_array_count:n {#2} } { \int_value:w 0 \__fp_tuple_compare_back_loop:w - #1 { \s__fp \prg_break: } ; @ - #2 { \s__fp \prg_break: } ; + #1 { \s__fp \prg_break: } \__fp_sep: @ + #2 { \s__fp \prg_break: } \__fp_sep: \prg_break_point: \exp_stop_f: } { 2 } } -\cs_new:Npn \__fp_tuple_compare_back_loop:w #1#2 ; #3 @ #4#5 ; +\cs_new:Npn \__fp_tuple_compare_back_loop:w #1#2 \__fp_sep: #3 @ #4#5 \__fp_sep: { \use_none:n #1 \use_none:n #4 \if_int_compare:w - \__fp_compare_back_any:ww #1 #2 ; #4 #5 ; = \c_zero_int + \__fp_compare_back_any:ww #1 #2 \__fp_sep: #4 #5 \__fp_sep: = \c_zero_int \else: 2 \exp_after:wN \prg_break: \fi: \__fp_tuple_compare_back_loop:w #3 @ } -\cs_new:Npn \__fp_compare_npos:nwnw #1#2; #3#4; +\cs_new:Npn \__fp_compare_npos:nwnw #1#2\__fp_sep: #3#4\__fp_sep: { \if_int_compare:w #1 = #3 \exp_stop_f: \__fp_compare_significand:nnnnnnnn #2 #4 @@ -17768,20 +17932,22 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp:w \exp_end_continue_f:w \__fp_parse:n {#3} } \cs_generate_variant:Nn \fp_step_function:nnnN { nnnc } -\cs_new:Npn \__fp_step:wwwN #1#2; #3#4; #5#6; #7 +\cs_new:Npn \__fp_step:wwwN #1#2\__fp_sep: #3#4\__fp_sep: #5#6\__fp_sep: #7 { \__fp_if_type_fp:NTwFw #1 { } \s__fp \prg_break: \s__fp_stop \__fp_if_type_fp:NTwFw #3 { } \s__fp \prg_break: \s__fp_stop \__fp_if_type_fp:NTwFw #5 { } \s__fp \prg_break: \s__fp_stop - \use_i:nnnn { \__fp_step_fp:wwwN #1#2; #3#4; #5#6; #7 } + \use_i:nnnn + { \__fp_step_fp:wwwN #1#2\__fp_sep: #3#4\__fp_sep: #5#6\__fp_sep: #7 } \prg_break_point: \use:n { - \__fp_error:nfff { step-tuple } { \fp_to_tl:n { #1#2 ; } } - { \fp_to_tl:n { #3#4 ; } } { \fp_to_tl:n { #5#6 ; } } + \__fp_error:nfff { step-tuple } { \fp_to_tl:n { #1#2 \__fp_sep: } } + { \fp_to_tl:n { #3#4 \__fp_sep: } } { \fp_to_tl:n { #5#6 \__fp_sep: } } } } -\cs_new:Npn \__fp_step_fp:wwwN #1 ; \s__fp \__fp_chk:w #2#3#4 ; #5; #6 +\cs_new:Npn \__fp_step_fp:wwwN + #1 \__fp_sep: \s__fp \__fp_chk:w #2#3#4 \__fp_sep: #5\__fp_sep: #6 { \token_if_eq_meaning:NNTF #2 1 { @@ -17797,11 +17963,15 @@ Type H <return> for immediate help}\def~{\errmessage{% } { \__fp_error:nnfn { bad-step } { } - { \fp_to_tl:n { \s__fp \__fp_chk:w #2#3#4 ; } } {#6} + { \fp_to_tl:n { \s__fp \__fp_chk:w #2#3#4 \__fp_sep: } } {#6} } \use_none:nnnnn } - { #1 ; } { \c_nan_fp } { \s__fp \__fp_chk:w #2#3#4 ; } { #5 ; } #6 + { #1 \__fp_sep: } + { \c_nan_fp } + { \s__fp \__fp_chk:w #2#3#4 \__fp_sep: } + { #5 \__fp_sep: } + #6 } \cs_new:Npn \__fp_step:NnnnnN #1#2#3#4#5#6 { @@ -17865,11 +18035,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_minmax_loop:Nww \exp_after:wN - \fi: #2 - \s__fp \__fp_chk:w 2 #1 \s__fp_exact ; - \s__fp \__fp_chk:w { 3 \__fp_minmax_break_o:w } ; + \s__fp \__fp_chk:w 2 #1 \s__fp_exact \__fp_sep: + \s__fp \__fp_chk:w { 3 \__fp_minmax_break_o:w } \__fp_sep: } \cs_new:Npn \__fp_minmax_loop:Nww - #1 \s__fp \__fp_chk:w #2#3; \s__fp \__fp_chk:w #4#5; + #1 \s__fp \__fp_chk:w #2#3\__fp_sep: \s__fp \__fp_chk:w #4#5\__fp_sep: { \if_meaning:w 3 #4 \if_meaning:w 3 #2 @@ -17880,8 +18050,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \if_int_compare:w \__fp_compare_back:ww - \s__fp \__fp_chk:w #4#5; - \s__fp \__fp_chk:w #2#3; + \s__fp \__fp_chk:w #4#5\__fp_sep: + \s__fp \__fp_chk:w #2#3\__fp_sep: = #1 1 \exp_stop_f: \__fp_minmax_auxii:ww \else: @@ -17889,16 +18059,17 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \fi: \__fp_minmax_loop:Nww #1 - \s__fp \__fp_chk:w #2#3; - \s__fp \__fp_chk:w #4#5; + \s__fp \__fp_chk:w #2#3\__fp_sep: + \s__fp \__fp_chk:w #4#5\__fp_sep: } -\cs_new:Npn \__fp_minmax_auxi:ww #1 \fi: \fi: #2 \s__fp #3 ; \s__fp #4; - { \fi: \fi: #2 \s__fp #3 ; } -\cs_new:Npn \__fp_minmax_auxii:ww #1 \fi: \fi: #2 \s__fp #3 ; +\cs_new:Npn \__fp_minmax_auxi:ww + #1 \fi: \fi: #2 \s__fp #3 \__fp_sep: \s__fp #4\__fp_sep: + { \fi: \fi: #2 \s__fp #3 \__fp_sep: } +\cs_new:Npn \__fp_minmax_auxii:ww #1 \fi: \fi: #2 \s__fp #3 \__fp_sep: { \fi: \fi: #2 } -\cs_new:Npn \__fp_minmax_break_o:w #1 \fi: \fi: #2 \s__fp #3; #4; - { \fi: \__fp_exp_after_o:w \s__fp #3; } -\cs_new:Npn \__fp_not_o:w #1 \s__fp \__fp_chk:w #2#3; @ +\cs_new:Npn \__fp_minmax_break_o:w #1 \fi: \fi: #2 \s__fp #3\__fp_sep: #4\__fp_sep: + { \fi: \__fp_exp_after_o:w \s__fp #3\__fp_sep: } +\cs_new:Npn \__fp_not_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @ { \if_meaning:w 0 #2 \exp_after:wN \exp_after:wN \exp_after:wN \c_one_fp @@ -17910,30 +18081,31 @@ Type H <return> for immediate help}\def~{\errmessage{% \group_begin: \char_set_catcode_letter:N & \char_set_catcode_letter:N | - \cs_new:Npn \__fp_&_o:ww #1 \s__fp \__fp_chk:w #2#3; + \cs_new:Npn \__fp_&_o:ww #1 \s__fp \__fp_chk:w #2#3\__fp_sep: { \if_meaning:w 0 #2 #1 - \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3; + \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3\__fp_sep: \fi: \__fp_exp_after_o:w } - \cs_new:Npn \__fp_&_tuple_o:ww #1 \s__fp \__fp_chk:w #2#3; + \cs_new:Npn \__fp_&_tuple_o:ww #1 \s__fp \__fp_chk:w #2#3\__fp_sep: { \if_meaning:w 0 #2 #1 - \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3; + \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3\__fp_sep: \fi: \__fp_exp_after_tuple_o:w } - \cs_new:Npn \__fp_tuple_&_o:ww #1; { \__fp_exp_after_o:w } - \cs_new:Npn \__fp_tuple_&_tuple_o:ww #1; { \__fp_exp_after_tuple_o:w } + \cs_new:Npn \__fp_tuple_&_o:ww #1\__fp_sep: { \__fp_exp_after_o:w } + \cs_new:Npn \__fp_tuple_&_tuple_o:ww #1\__fp_sep: { \__fp_exp_after_tuple_o:w } \cs_new:Npn \__fp_|_o:ww { \__fp_&_o:ww \else: } \cs_new:Npn \__fp_|_tuple_o:ww { \__fp_&_tuple_o:ww \else: } - \cs_new:Npn \__fp_tuple_|_o:ww #1; #2; { \__fp_exp_after_tuple_o:w #1; } - \cs_new:Npn \__fp_tuple_|_tuple_o:ww #1; #2; - { \__fp_exp_after_tuple_o:w #1; } + \cs_new:Npn \__fp_tuple_|_o:ww #1\__fp_sep: #2\__fp_sep: + { \__fp_exp_after_tuple_o:w #1\__fp_sep: } + \cs_new:Npn \__fp_tuple_|_tuple_o:ww #1\__fp_sep: #2\__fp_sep: + { \__fp_exp_after_tuple_o:w #1\__fp_sep: } \group_end: -\cs_new:Npn \__fp_and_return:wNw #1; \fi: #2; - { \fi: \__fp_exp_after_o:w #1; } +\cs_new:Npn \__fp_and_return:wNw #1\__fp_sep: \fi: #2\__fp_sep: + { \fi: \__fp_exp_after_o:w #1\__fp_sep: } \cs_new:Npn \__fp_ternary:NwwN #1 #2#3@ #4@ #5 { \if_meaning:w \__fp_parse_infix_::N #5 @@ -17994,7 +18166,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_not:n { \s__fp \__fp_neg_sign:N } } \cs_new:cpn { __fp_+_o:ww } - \s__fp #1 \__fp_chk:w #2 #3 ; \s__fp \__fp_chk:w #4 #5 + \s__fp #1 \__fp_chk:w #2 #3 \__fp_sep: \s__fp \__fp_chk:w #4 #5 { \if_case:w \if_meaning:w #2 #4 @@ -18014,10 +18186,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \exp_after:wN \__fp_add_return_ii_o:Nww \int_value:w \fi: #1 #5 - \s__fp \__fp_chk:w #2 #3 ; + \s__fp \__fp_chk:w #2 #3 \__fp_sep: \s__fp \__fp_chk:w #4 #5 } -\cs_new:Npn \__fp_add_return_ii_o:Nww #1 #2 ; \s__fp \__fp_chk:w #3 #4 +\cs_new:Npn \__fp_add_return_ii_o:Nww #1 #2 \__fp_sep: \s__fp \__fp_chk:w #3 #4 { \__fp_exp_after_o:w \s__fp \__fp_chk:w #3 #1 } \cs_new:Npn \__fp_add_zeros_o:Nww #1 \s__fp \__fp_chk:w 0 #2 { @@ -18030,7 +18202,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \s__fp \__fp_chk:w 0 #2 } \cs_new:Npn \__fp_add_inf_o:Nww - #1 \s__fp \__fp_chk:w 2 #2 #3; \s__fp \__fp_chk:w 2 #4 + #1 \s__fp \__fp_chk:w 2 #2 #3\__fp_sep: \s__fp \__fp_chk:w 2 #4 { \if_meaning:w #1 #2 \__fp_case_return_i_o:ww @@ -18041,7 +18213,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \token_if_eq_meaning:NNTF #1 #4 + - } } \fi: - \s__fp \__fp_chk:w 2 #2 #3; + \s__fp \__fp_chk:w 2 #2 #3\__fp_sep: \s__fp \__fp_chk:w 2 #4 } \cs_new:Npn \__fp_add_normal_o:Nww #1 \s__fp \__fp_chk:w 1 #2 @@ -18053,7 +18225,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: #2 } -\cs_new:Npn \__fp_add_npos_o:NnwNnw #1#2#3 ; \s__fp \__fp_chk:w 1 #4 #5 +\cs_new:Npn \__fp_add_npos_o:NnwNnw #1#2#3 \__fp_sep: \s__fp \__fp_chk:w 1 #4 #5 { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 @@ -18065,9 +18237,9 @@ Type H <return> for immediate help}\def~{\errmessage{% #5 \exp_after:wN \__fp_add_big_ii_o:wNww \int_value:w \fi: - \__fp_int_eval:w #5 - #2 ; #1 #3; + \__fp_int_eval:w #5 - #2 \__fp_sep: #1 #3\__fp_sep: } -\cs_new:Npn \__fp_add_big_i_o:wNww #1; #2 #3; #4; +\cs_new:Npn \__fp_add_big_i_o:wNww #1\__fp_sep: #2 #3\__fp_sep: #4\__fp_sep: { \__fp_decimate:nNnnnn {#1} \__fp_add_significand_o:NnnwnnnnN @@ -18075,7 +18247,7 @@ Type H <return> for immediate help}\def~{\errmessage{% #3 #2 } -\cs_new:Npn \__fp_add_big_ii_o:wNww #1; #2 #3; #4; +\cs_new:Npn \__fp_add_big_ii_o:wNww #1\__fp_sep: #2 #3\__fp_sep: #4\__fp_sep: { \__fp_decimate:nNnnnn {#1} \__fp_add_significand_o:NnnwnnnnN @@ -18083,19 +18255,19 @@ Type H <return> for immediate help}\def~{\errmessage{% #4 #2 } -\cs_new:Npn \__fp_add_significand_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8 +\cs_new:Npn \__fp_add_significand_o:NnnwnnnnN #1 #2#3 #4\__fp_sep: #5#6#7#8 { \exp_after:wN \__fp_add_significand_test_o:N \int_value:w \__fp_int_eval:w 1#5#6 + #2 \exp_after:wN \__fp_add_significand_pack:NNNNNNN - \int_value:w \__fp_int_eval:w 1#7#8 + #3 ; #1 + \int_value:w \__fp_int_eval:w 1#7#8 + #3 \__fp_sep: #1 } \cs_new:Npn \__fp_add_significand_pack:NNNNNNN #1 #2#3#4#5#6#7 { \if_meaning:w 2 #1 + 1 \fi: - ; #2 #3 #4 #5 #6 #7 ; + \__fp_sep: #2 #3 #4 #5 #6 #7 \__fp_sep: } \cs_new:Npn \__fp_add_significand_test_o:N #1 { @@ -18106,17 +18278,17 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: } \cs_new:Npn \__fp_add_significand_no_carry_o:wwwNN - #1; #2; #3#4 ; #5#6 + #1\__fp_sep: #2\__fp_sep: #3#4 \__fp_sep: #5#6 { \exp_after:wN \__fp_basics_pack_high:NNNNNw \int_value:w \__fp_int_eval:w 1 #1 \exp_after:wN \__fp_basics_pack_low:NNNNNw \int_value:w \__fp_int_eval:w 1 #2 #3#4 + \__fp_round:NNN #6 #4 #5 - \exp_after:wN ; + \exp_after:wN \__fp_sep: } \cs_new:Npn \__fp_add_significand_carry_o:wwwNN - #1; #2; #3#4; #5#6 + #1\__fp_sep: #2\__fp_sep: #3#4\__fp_sep: #5#6 { + 1 \exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw @@ -18126,28 +18298,31 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_round:NNN \exp_after:wN #6 \exp_after:wN #3 - \int_value:w \__fp_round_digit:Nw #4 #5 ; - \exp_after:wN ; + \int_value:w \__fp_round_digit:Nw #4 #5 \__fp_sep: + \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_sub_npos_o:NnwNnw #1#2#3; \s__fp \__fp_chk:w 1 #4#5#6; +\cs_new:Npn \__fp_sub_npos_o:NnwNnw + #1#2#3\__fp_sep: \s__fp \__fp_chk:w 1 #4#5#6\__fp_sep: { - \if_case:w \__fp_compare_npos:nwnw {#2} #3; {#5} #6; \exp_stop_f: + \if_case:w + \__fp_compare_npos:nwnw {#2} #3\__fp_sep: {#5} #6\__fp_sep: \exp_stop_f: \exp_after:wN \__fp_sub_eq_o:Nnwnw \or: \exp_after:wN \__fp_sub_npos_i_o:Nnwnw \else: \exp_after:wN \__fp_sub_npos_ii_o:Nnwnw \fi: - #1 {#2} #3; {#5} #6; + #1 {#2} #3\__fp_sep: {#5} #6\__fp_sep: } -\cs_new:Npn \__fp_sub_eq_o:Nnwnw #1#2; #3; { \exp_after:wN \c_zero_fp } -\cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2; #3; +\cs_new:Npn \__fp_sub_eq_o:Nnwnw #1#2\__fp_sep: #3\__fp_sep: + { \exp_after:wN \c_zero_fp } +\cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2\__fp_sep: #3\__fp_sep: { \exp_after:wN \__fp_sub_npos_i_o:Nnwnw \int_value:w \__fp_neg_sign:N #1 - #3; #2; + #3\__fp_sep: #2\__fp_sep: } -\cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3; #4#5; +\cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3\__fp_sep: #4#5\__fp_sep: { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 @@ -18169,42 +18344,43 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_sub_back_near_after:wNNNNw \int_value:w \__fp_int_eval:w 10#5#6 - #1#2 - 11 \exp_after:wN \__fp_sub_back_near_pack:NNNNNNw - \int_value:w \__fp_int_eval:w 11#7#8 - #3#4 \exp_after:wN ; + \int_value:w \__fp_int_eval:w 11#7#8 - #3#4 \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 ; - { + #1#2 ; {#3#4#5#6} {#7} ; } -\cs_new:Npn \__fp_sub_back_near_after:wNNNNw 10 #1#2#3#4 #5 ; +\cs_new:Npn \__fp_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 \__fp_sep: + { + #1#2 \__fp_sep: {#3#4#5#6} {#7} \__fp_sep: } +\cs_new:Npn \__fp_sub_back_near_after:wNNNNw 10 #1#2#3#4 #5 \__fp_sep: { \if_meaning:w 0 #1 \exp_after:wN \__fp_sub_back_shift:wnnnn \fi: - ; {#1#2#3#4} {#5} + \__fp_sep: {#1#2#3#4} {#5} } -\cs_new:Npn \__fp_sub_back_shift:wnnnn ; #1#2 +\cs_new:Npn \__fp_sub_back_shift:wnnnn \__fp_sep: #1#2 { \exp_after:wN \__fp_sub_back_shift_ii:ww - \int_value:w #1 #2 0 ; + \int_value:w #1 #2 0 \__fp_sep: } -\cs_new:Npn \__fp_sub_back_shift_ii:ww #1 0 ; #2#3 ; +\cs_new:Npn \__fp_sub_back_shift_ii:ww #1 0 \__fp_sep: #2#3 \__fp_sep: { \if_meaning:w @ #1 @ - 7 - \exp_after:wN \use_i:nnn \exp_after:wN \__fp_sub_back_shift_iii:NNNNNNNNw - \int_value:w #2#3 0 ~ 123456789; + \int_value:w #2#3 0 ~ 123456789\__fp_sep: \else: - - \__fp_sub_back_shift_iii:NNNNNNNNw #1 123456789; + - \__fp_sub_back_shift_iii:NNNNNNNNw #1 123456789\__fp_sep: \fi: \exp_after:wN \__fp_pack_twice_four:wNNNNNNNN \exp_after:wN \__fp_pack_twice_four:wNNNNNNNN \exp_after:wN \__fp_sub_back_shift_iv:nnnnw - \exp_after:wN ; + \exp_after:wN \__fp_sep: \int_value:w - #1 ~ #2#3 0 ~ 0000 0000 0000 000 ; + #1 ~ #2#3 0 ~ 0000 0000 0000 000 \__fp_sep: } -\cs_new:Npn \__fp_sub_back_shift_iii:NNNNNNNNw #1#2#3#4#5#6#7#8#9; {#8} -\cs_new:Npn \__fp_sub_back_shift_iv:nnnnw #1 ; #2 ; { ; #1 ; } -\cs_new:Npn \__fp_sub_back_far_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8 +\cs_new:Npn \__fp_sub_back_shift_iii:NNNNNNNNw #1#2#3#4#5#6#7#8#9\__fp_sep: {#8} +\cs_new:Npn \__fp_sub_back_shift_iv:nnnnw #1 \__fp_sep: #2 \__fp_sep: + { \__fp_sep: #1 \__fp_sep: } +\cs_new:Npn \__fp_sub_back_far_o:NnnwnnnnN #1 #2#3 #4\__fp_sep: #5#6#7#8 { \if_case:w \if_int_compare:w 1 #2 = #5#6 \use_i:nnnn #7 \exp_stop_f: @@ -18221,9 +18397,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \exp_after:wN \__fp_sub_back_very_far_o:wwwwNN \else: \exp_after:wN \__fp_sub_back_not_far_o:wwwwNN \fi: - #2 ~ #3 ; #5 #6 ~ #7 #8 ; #1 + #2 ~ #3 \__fp_sep: #5 #6 ~ #7 #8 \__fp_sep: #1 } -\cs_new:Npn \__fp_sub_back_quite_far_o:wwNN #1; #2; #3#4 +\cs_new:Npn \__fp_sub_back_quite_far_o:wwNN #1\__fp_sep: #2\__fp_sep: #3#4 { \exp_after:wN \__fp_sub_back_quite_far_ii:NN \exp_after:wN #3 @@ -18236,10 +18412,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \exp_after:wN \use_ii:nn \fi: - { ; {1000} {0000} {0000} {0000} ; } - { - 1 ; {9999} {9999} {9999} {9999} ; } + { \__fp_sep: {1000} {0000} {0000} {0000} \__fp_sep: } + { - 1 \__fp_sep: {9999} {9999} {9999} {9999} \__fp_sep: } } -\cs_new:Npn \__fp_sub_back_not_far_o:wwwwNN #1 ~ #2; #3 ~ #4; #5#6 +\cs_new:Npn \__fp_sub_back_not_far_o:wwwwNN #1 ~ #2\__fp_sep: #3 ~ #4\__fp_sep: #5#6 { - 1 \exp_after:wN \__fp_sub_back_near_after:wNNNNw @@ -18249,16 +18425,17 @@ Type H <return> for immediate help}\def~{\errmessage{% - \exp_after:wN \__fp_round_neg:NNN \exp_after:wN #6 \use_none:nnnnnnn #2 #5 - \exp_after:wN ; + \exp_after:wN \__fp_sep: } \cs_new:Npn \__fp_sub_back_very_far_o:wwwwNN #1#2#3#4#5#6#7 { \__fp_pack_eight:wNNNNNNNN \__fp_sub_back_very_far_ii_o:nnNwwNN { 0 #1#2#3 #4#5#6#7 } - ; + \__fp_sep: } -\cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN #1#2 ; #3 ; #4 ~ #5; #6#7 +\cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN + #1#2 \__fp_sep: #3 \__fp_sep: #4 ~ #5\__fp_sep: #6#7 { \exp_after:wN \__fp_basics_pack_high:NNNNNw \int_value:w \__fp_int_eval:w 1#4 - #1 - 1 @@ -18269,8 +18446,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \if_int_odd:w \__fp_int_eval:w #5 - #2 \__fp_int_eval_end: 1 \else: 2 \fi: - \int_value:w \__fp_round_digit:Nw #3 #6 ; - \exp_after:wN ; + \int_value:w \__fp_round_digit:Nw #3 #6 \__fp_sep: + \exp_after:wN \__fp_sep: } \cs_new:cpn { __fp_*_o:ww } { @@ -18281,7 +18458,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { } } \cs_new:Npn \__fp_mul_cases_o:NnNnww - #1#2#3#4 \s__fp \__fp_chk:w #5#6#7; \s__fp \__fp_chk:w #8#9 + #1#2#3#4 \s__fp \__fp_chk:w #5#6#7\__fp_sep: \s__fp \__fp_chk:w #8#9 { \if_case:w \__fp_int_eval:w \if_int_compare:w #5 #8 = 11 ~ @@ -18315,11 +18492,12 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \__fp_case_return_o:Nww \c_minus_inf_fp #4 \fi: - \s__fp \__fp_chk:w #5 #6 #7; + \s__fp \__fp_chk:w #5 #6 #7\__fp_sep: \s__fp \__fp_chk:w #8 #9 } \cs_new:Npn \__fp_mul_npos_o:Nww - #1 \s__fp \__fp_chk:w #2 #3 #4 #5 ; \s__fp \__fp_chk:w #6 #7 #8 #9 ; + #1 \s__fp \__fp_chk:w #2 #3 #4 #5 \__fp_sep: + \s__fp \__fp_chk:w #6 #7 #8 #9 \__fp_sep: { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 @@ -18345,13 +18523,13 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_mul_significand_drop:NNNNNw \int_value:w \__fp_int_eval:w 99990000 + #3*#9 + #4*#8 + \exp_after:wN \__fp_mul_significand_drop:NNNNNw - \int_value:w \__fp_int_eval:w 100000000 + #4*#9 ; - ; \exp_after:wN ; + \int_value:w \__fp_int_eval:w 100000000 + #4*#9 \__fp_sep: + \__fp_sep: \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_mul_significand_drop:NNNNNw #1#2#3#4#5 #6; - { #1#2#3#4#5 ; + #6 } -\cs_new:Npn \__fp_mul_significand_keep:NNNNNw #1#2#3#4#5 #6; - { #1#2#3#4#5 ; #6 ; } +\cs_new:Npn \__fp_mul_significand_drop:NNNNNw #1#2#3#4#5 #6\__fp_sep: + { #1#2#3#4#5 \__fp_sep: + #6 } +\cs_new:Npn \__fp_mul_significand_keep:NNNNNw #1#2#3#4#5 #6\__fp_sep: + { #1#2#3#4#5 \__fp_sep: #6 \__fp_sep: } \cs_new:Npn \__fp_mul_significand_test_f:NNN #1 #2 #3 { \if_meaning:w 0 #3 @@ -18361,7 +18539,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: #1 #3 } -\cs_new:Npn \__fp_mul_significand_large_f:NwwNNNN #1 #2; #3; #4#5#6#7; + +\cs_new:Npn \__fp_mul_significand_large_f:NwwNNNN + #1 #2\__fp_sep: #3\__fp_sep: #4#5#6#7\__fp_sep: + { \exp_after:wN \__fp_basics_pack_high:NNNNNw \int_value:w \__fp_int_eval:w 1#2 @@ -18372,7 +18551,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN #7 \int_value:w \__fp_round_digit:Nw } -\cs_new:Npn \__fp_mul_significand_small_f:NNwwwN #1 #2#3; #4#5; #6; + #7 +\cs_new:Npn \__fp_mul_significand_small_f:NNwwwN + #1 #2#3\__fp_sep: #4#5\__fp_sep: #6\__fp_sep: + #7 { - 1 \exp_after:wN \__fp_basics_pack_high:NNNNNw @@ -18400,25 +18580,26 @@ Type H <return> for immediate help}\def~{\errmessage{% } } \cs_new:Npn \__fp_div_npos_o:Nww - #1 \s__fp \__fp_chk:w 1 #2 #3 #4 ; \s__fp \__fp_chk:w 1 #5 #6 #7#8#9; + #1 \s__fp \__fp_chk:w 1 #2 #3 #4 \__fp_sep: + \s__fp \__fp_chk:w 1 #5 #6 #7#8#9\__fp_sep: { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 \int_value:w \__fp_int_eval:w #3 - #6 \exp_after:wN \__fp_div_significand_i_o:wnnw - \int_value:w \__fp_int_eval:w #7 \use_i:nnnn #8 + 1 ; + \int_value:w \__fp_int_eval:w #7 \use_i:nnnn #8 + 1 \__fp_sep: #4 - {#7}{#8}#9 ; + {#7}{#8}#9 \__fp_sep: #1 } -\cs_new:Npn \__fp_div_significand_i_o:wnnw #1 ; #2#3 #4 ; +\cs_new:Npn \__fp_div_significand_i_o:wnnw #1 \__fp_sep: #2#3 #4 \__fp_sep: { \exp_after:wN \__fp_div_significand_test_o:w \int_value:w \__fp_int_eval:w \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 ; - #2 #3 ; + \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 \__fp_sep: + #2 #3 \__fp_sep: #4 { \exp_after:wN \__fp_div_significand_ii:wwn \int_value:w #1 } { \exp_after:wN \__fp_div_significand_ii:wwn \int_value:w #1 } @@ -18434,10 +18615,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: } \cs_new:Npn \__fp_div_significand_calc_i:wwnnnnnnn - #1; #2;#3#4 #5#6#7#8 #9 + #1\__fp_sep: #2\__fp_sep:#3#4 #5#6#7#8 #9 { 1 1 #1 - #9 \exp_after:wN ; + #9 \exp_after:wN \__fp_sep: \int_value:w \__fp_int_eval:w \c__fp_Bigg_leading_shift_int + #2 - #1 * #5 - #5#60 \exp_after:wN \__fp_pack_Bigg:NNNNNNw @@ -18448,14 +18629,14 @@ Type H <return> for immediate help}\def~{\errmessage{% + #4 - #1 * #7 - #80 \exp_after:wN \__fp_pack_Bigg:NNNNNNw \int_value:w \__fp_int_eval:w \c__fp_Bigg_trailing_shift_int - - #1 * #8 ; + - #1 * #8 \__fp_sep: {#5}{#6}{#7}{#8} } \cs_new:Npn \__fp_div_significand_calc_ii:wwnnnnnnn - #1; #2;#3#4 #5#6#7#8 #9 + #1\__fp_sep: #2\__fp_sep:#3#4 #5#6#7#8 #9 { 1 0 #1 - #9 \exp_after:wN ; + #9 \exp_after:wN \__fp_sep: \int_value:w \__fp_int_eval:w \c__fp_Bigg_leading_shift_int + #2 - #1 * #5 \exp_after:wN \__fp_pack_Bigg:NNNNNNw @@ -18466,25 +18647,27 @@ Type H <return> for immediate help}\def~{\errmessage{% + #4 - #1 * #7 \exp_after:wN \__fp_pack_Bigg:NNNNNNw \int_value:w \__fp_int_eval:w \c__fp_Bigg_trailing_shift_int - - #1 * #8 ; + - #1 * #8 \__fp_sep: {#5}{#6}{#7}{#8} } -\cs_new:Npn \__fp_div_significand_ii:wwn #1; #2;#3 +\cs_new:Npn \__fp_div_significand_ii:wwn #1\__fp_sep: #2\__fp_sep:#3 { \exp_after:wN \__fp_div_significand_pack:NNN \int_value:w \__fp_int_eval:w \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ; + \int_value:w \__fp_int_eval:w + 999999 + #2 #3 0 / #1 \__fp_sep: #2 #3 \__fp_sep: } -\cs_new:Npn \__fp_div_significand_iii:wwnnnnn #1; #2;#3#4#5 #6#7 +\cs_new:Npn \__fp_div_significand_iii:wwnnnnn #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7 { 0 \exp_after:wN \__fp_div_significand_iv:wwnnnnnnn - \int_value:w \__fp_int_eval:w ( 2 * #2 #3) / #6 #7 ; % <- P - #2 ; {#3} {#4} {#5} + \int_value:w \__fp_int_eval:w ( 2 * #2 #3) / #6 #7 \__fp_sep: % <- P + #2 \__fp_sep: {#3} {#4} {#5} {#6} {#7} } -\cs_new:Npn \__fp_div_significand_iv:wwnnnnnnn #1; #2;#3#4#5 #6#7#8#9 +\cs_new:Npn \__fp_div_significand_iv:wwnnnnnnn + #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7#8#9 { + 5 * #1 \exp_after:wN \__fp_div_significand_vi:Nw @@ -18492,19 +18675,19 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_div_significand_v:NN \int_value:w \__fp_int_eval:w 499950 + 2*#4 - #1*#8 + \exp_after:wN \__fp_div_significand_v:NN - \int_value:w \__fp_int_eval:w 500000 + 2*#5 - #1*#9 ; + \int_value:w \__fp_int_eval:w 500000 + 2*#5 - #1*#9 \__fp_sep: } \cs_new:Npn \__fp_div_significand_v:NN #1#2 { #1#2 \__fp_int_eval_end: + } -\cs_new:Npn \__fp_div_significand_vi:Nw #1#2; +\cs_new:Npn \__fp_div_significand_vi:Nw #1#2\__fp_sep: { \if_meaning:w 0 #1 \if_int_compare:w \__fp_int_eval:w #2 > 0 + 1 \fi: \else: \if_meaning:w - #1 - \else: + \fi: 1 \fi: - ; + \__fp_sep: } -\cs_new:Npn \__fp_div_significand_pack:NNN 1 #1 #2 { + #1 #2 ; } +\cs_new:Npn \__fp_div_significand_pack:NNN 1 #1 #2 { + #1 #2 \__fp_sep: } \cs_new:Npn \__fp_div_significand_test_o:w 10 #1 { \if_meaning:w 0 #1 @@ -18515,17 +18698,17 @@ Type H <return> for immediate help}\def~{\errmessage{% #1 } \cs_new:Npn \__fp_div_significand_small_o:wwwNNNNwN - 0 #1; #2; #3; #4#5#6#7#8; #9 + 0 #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4#5#6#7#8\__fp_sep: #9 { \exp_after:wN \__fp_basics_pack_high:NNNNNw \int_value:w \__fp_int_eval:w 1 #1#2 \exp_after:wN \__fp_basics_pack_low:NNNNNw \int_value:w \__fp_int_eval:w 1 #3#4#5#6#7 + \__fp_round:NNN #9 #7 #8 - \exp_after:wN ; + \exp_after:wN \__fp_sep: } \cs_new:Npn \__fp_div_significand_large_o:wwwNNNNwN - #1; #2; #3; #4#5#6#7#8; #9 + #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4#5#6#7#8\__fp_sep: #9 { + 1 \exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw @@ -18535,10 +18718,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_round:NNN \exp_after:wN #9 \exp_after:wN #6 - \int_value:w \__fp_round_digit:Nw #7 #8 ; - \exp_after:wN ; + \int_value:w \__fp_round_digit:Nw #7 #8 \__fp_sep: + \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_sqrt_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_sqrt_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_meaning:w 0 #2 \__fp_case_return_same_o:w \fi: \if_meaning:w 2 #3 @@ -18546,9 +18729,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \if_meaning:w 1 #2 \else: \__fp_case_return_same_o:w \fi: \__fp_sqrt_npos_o:w - \s__fp \__fp_chk:w #2 #3 #4; + \s__fp \__fp_chk:w #2 #3 #4\__fp_sep: } -\cs_new:Npn \__fp_sqrt_npos_o:w \s__fp \__fp_chk:w 1 0 #1#2#3#4#5; +\cs_new:Npn \__fp_sqrt_npos_o:w \s__fp \__fp_chk:w 1 0 #1#2#3#4#5\__fp_sep: { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN 0 @@ -18557,19 +18740,19 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_sqrt_npos_auxi_o:wwnnN \fi: #1 / 2 - \__fp_sqrt_Newton_o:wwn 56234133; 0; {#2#3} {#4#5} 0 + \__fp_sqrt_Newton_o:wwn 56234133\__fp_sep: 0\__fp_sep: {#2#3} {#4#5} 0 } -\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / 2 #2; 0; #3#4#5 +\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / 2 #2\__fp_sep: 0\__fp_sep: #3#4#5 { ( #1 + 1 ) / 2 \__fp_pack_eight:wNNNNNNNN \__fp_sqrt_npos_auxii_o:wNNNNNNNN - ; + \__fp_sep: 0 #3 #4 } -\cs_new:Npn \__fp_sqrt_npos_auxii_o:wNNNNNNNN #1; #2#3#4#5#6#7#8#9 - { \__fp_sqrt_Newton_o:wwn 17782794; 0; {#1} {#2#3#4#5#6#7#8#9} } -\cs_new:Npn \__fp_sqrt_Newton_o:wwn #1; #2; #3 +\cs_new:Npn \__fp_sqrt_npos_auxii_o:wNNNNNNNN #1\__fp_sep: #2#3#4#5#6#7#8#9 + { \__fp_sqrt_Newton_o:wwn 17782794\__fp_sep: 0\__fp_sep: {#1} {#2#3#4#5#6#7#8#9} } +\cs_new:Npn \__fp_sqrt_Newton_o:wwn #1\__fp_sep: #2\__fp_sep: #3 { \if_int_compare:w #1 = #2 \exp_stop_f: \exp_after:wN \__fp_sqrt_auxi_o:NNNNwnnN @@ -18577,10 +18760,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_use_none_until_s:w \fi: \exp_after:wN \__fp_sqrt_Newton_o:wwn - \int_value:w \__fp_int_eval:w (#1 + #3 * 1 0000 0000 / #1) / 2 ; - #1; {#3} + \int_value:w \__fp_int_eval:w (#1 + #3 * 1 0000 0000 / #1) / 2 \__fp_sep: + #1\__fp_sep: {#3} } -\cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5; +\cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5\__fp_sep: { \__fp_sqrt_auxii_o:NnnnnnnnN \__fp_sqrt_auxiii_o:wnnnnnnnn @@ -18616,13 +18799,13 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_pack_big:NNNNNNw \int_value:w \__fp_int_eval:w \c__fp_big_trailing_shift_int - - #6 * #6 ; + - #6 * #6 \__fp_sep: % ( - - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 ; + - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 \__fp_sep: {#2}{#3}{#4}{#5}{#6} {#7}{#8}#9 } \cs_new:Npn \__fp_sqrt_auxiii_o:wnnnnnnnn - #1; #2#3#4#5#6#7#8#9 + #1\__fp_sep: #2#3#4#5#6#7#8#9 { \if_int_compare:w #1 > \c_one_int \exp_after:wN \__fp_sqrt_auxiv_o:NNNNNw @@ -18642,13 +18825,13 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \fi: } -\cs_new:Npn \__fp_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6; +\cs_new:Npn \__fp_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep: { \__fp_sqrt_auxviii_o:nnnnnnn {#1#2#3#4#5#6} {00000000} } -\cs_new:Npn \__fp_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6; +\cs_new:Npn \__fp_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep: { \__fp_sqrt_auxviii_o:nnnnnnn {000#1#2#3#4#5} {#60000} } -\cs_new:Npn \__fp_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6; +\cs_new:Npn \__fp_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep: { \__fp_sqrt_auxviii_o:nnnnnnn {0000000#1} {#2#3#4#5#6} } -\cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6; +\cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep: { \if_int_compare:w #1#2 = \c_zero_int \exp_after:wN \__fp_sqrt_auxx_o:Nnnnnnnn @@ -18662,9 +18845,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_basics_pack_low:NNNNNw \int_value:w \__fp_int_eval:w #1 + 1#4#5 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_value:w \__fp_int_eval:w #2 + 1#6#7 ; + \int_value:w \__fp_int_eval:w #2 + 1#6#7 \__fp_sep: } -\cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1; #2#3; #4#5; +\cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1\__fp_sep: #2#3\__fp_sep: #4#5\__fp_sep: { \__fp_sqrt_auxii_o:NnnnnnnnN \__fp_sqrt_auxiii_o:wnnnnnnnn {#1}{#2}{#3}{#4}{#5} @@ -18673,17 +18856,17 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__fp_sqrt_auxxi_o:wwnnN \int_value:w \__fp_int_eval:w - (#8 + 2499) / 5000 * 5000 ; - {#4} {#5} {#6} {#7} ; + (#8 + 2499) / 5000 * 5000 \__fp_sep: + {#4} {#5} {#6} {#7} \__fp_sep: } -\cs_new:Npn \__fp_sqrt_auxxi_o:wwnnN #1; #2; #3#4#5 +\cs_new:Npn \__fp_sqrt_auxxi_o:wwnnN #1\__fp_sep: #2\__fp_sep: #3#4#5 { \__fp_sqrt_auxii_o:NnnnnnnnN \__fp_sqrt_auxxii_o:nnnnnnnnw #2 {#1} {#3} { #4 + 1 } #5 } -\cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0; #1#2#3#4#5#6#7#8 #9; +\cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0\__fp_sep: #1#2#3#4#5#6#7#8 #9\__fp_sep: { \if_int_compare:w #1#2 > \c_zero_int \if_int_compare:w #1#2 = \c_one_int @@ -18701,14 +18884,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_sqrt_auxxiv_o:wnnnnnnnN \int_value:w 10000 \fi: - ; + \__fp_sep: } -\cs_new:Npn \__fp_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: ; +\cs_new:Npn \__fp_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: \__fp_sep: { \fi: \fi: \fi: \fi: \fi: - \__fp_sqrt_auxxiv_o:wnnnnnnnN 9999 ; + \__fp_sqrt_auxxiv_o:wnnnnnnnN 9999 \__fp_sep: } -\cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1; #2#3#4#5#6 #7#8#9 +\cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1\__fp_sep: #2#3#4#5#6 #7#8#9 { \exp_after:wN \__fp_basics_pack_high:NNNNNw \int_value:w \__fp_int_eval:w 1 0000 0000 + #2#3 @@ -18722,10 +18905,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \exp_after:wN \use_i:nn \exp_after:wN \__fp_round_digit:Nw - \int_value:w \__fp_int_eval:w #6 + 19999 - #1 ; - \exp_after:wN ; + \int_value:w \__fp_int_eval:w #6 + 19999 - #1 \__fp_sep: + \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_logb_o:w ? \s__fp \__fp_chk:w #1#2; @ +\cs_new:Npn \__fp_logb_o:w ? \s__fp \__fp_chk:w #1#2\__fp_sep: @ { \if_case:w #1 \exp_stop_f: \__fp_case_use:nw @@ -18734,14 +18917,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \__fp_case_return_o:Nw \c_inf_fp \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #1 #2; + \s__fp \__fp_chk:w #1 #2\__fp_sep: } -\cs_new:Npn \__fp_logb_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 #4 ; +\cs_new:Npn \__fp_logb_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 #4 \__fp_sep: { \exp_after:wN \__fp_parse:n \exp_after:wN { \int_value:w \int_eval:w #3 - 1 \exp_after:wN } } -\cs_new:Npn \__fp_sign_o:w ? \s__fp \__fp_chk:w #1#2; @ +\cs_new:Npn \__fp_sign_o:w ? \s__fp \__fp_chk:w #1#2\__fp_sep: @ { \if_case:w #1 \exp_stop_f: \__fp_case_return_same_o:w @@ -18749,11 +18932,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \exp_after:wN \__fp_sign_aux_o:w \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #1 #2; + \s__fp \__fp_chk:w #1 #2\__fp_sep: } -\cs_new:Npn \__fp_sign_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 ; +\cs_new:Npn \__fp_sign_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 \__fp_sep: { \exp_after:wN \__fp_set_sign_o:w \exp_after:wN #2 \c_one_fp @ } -\cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \exp_after:wN \__fp_exp_after_o:w \exp_after:wN \s__fp @@ -18761,7 +18944,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN #2 \int_value:w \if_case:w #3 \exp_stop_f: #1 \or: 1 \or: 0 \fi: \exp_stop_f: - #4; + #4\__fp_sep: } \cs_new:Npn \__fp_tuple_set_sign_o:w #1#2 @ { @@ -18773,53 +18956,60 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npn \__fp_tuple_set_sign_aux_o:Nnw #1#2 { \__fp_tuple_map_o:nw \__fp_tuple_set_sign_aux_o:w } -\cs_new:Npn \__fp_tuple_set_sign_aux_o:w #1#2 ; +\cs_new:Npn \__fp_tuple_set_sign_aux_o:w #1#2 \__fp_sep: { \__fp_change_func_type:NNN #1 \__fp_set_sign_o:w \__fp_parse_apply_unary_error:NNw - 2 #1 #2 ; @ - } -\cs_new:cpn { __fp_*_tuple_o:ww } #1 ; - { \__fp_tuple_map_o:nw { \__fp_binary_type_o:Nww * #1 ; } } -\cs_new:cpn { __fp_tuple_*_o:ww } #1 ; #2 ; - { \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww * #2 ; } #1 ; } -\cs_new:cpn { __fp_tuple_/_o:ww } #1 ; #2 ; - { \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww / #2 ; } #1 ; } + 2 #1 #2 \__fp_sep: @ + } +\cs_new:cpn { __fp_*_tuple_o:ww } #1 \__fp_sep: + { \__fp_tuple_map_o:nw { \__fp_binary_type_o:Nww * #1 \__fp_sep: } } +\cs_new:cpn { __fp_tuple_*_o:ww } #1 \__fp_sep: #2 \__fp_sep: + { + \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww * #2 \__fp_sep: } + #1 \__fp_sep: + } +\cs_new:cpn { __fp_tuple_/_o:ww } #1 \__fp_sep: #2 \__fp_sep: + { + \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww / #2 \__fp_sep: } + #1 \__fp_sep: + } \cs_set_protected:Npn \__fp_tmp:w #1 { \cs_new:cpn { __fp_tuple_#1_tuple_o:ww } - \s__fp_tuple \__fp_tuple_chk:w ##1 ; - \s__fp_tuple \__fp_tuple_chk:w ##2 ; + \s__fp_tuple \__fp_tuple_chk:w ##1 \__fp_sep: + \s__fp_tuple \__fp_tuple_chk:w ##2 \__fp_sep: { \int_compare:nNnTF { \__fp_array_count:n {##1} } = { \__fp_array_count:n {##2} } { \__fp_tuple_mapthread_o:nww { \__fp_binary_type_o:Nww #1 } } { \__fp_invalid_operation_o:nww #1 } - \s__fp_tuple \__fp_tuple_chk:w {##1} ; - \s__fp_tuple \__fp_tuple_chk:w {##2} ; + \s__fp_tuple \__fp_tuple_chk:w {##1} \__fp_sep: + \s__fp_tuple \__fp_tuple_chk:w {##2} \__fp_sep: } } \__fp_tmp:w + \__fp_tmp:w - %% File: l3fp-extended.dtx \tl_const:Nn \c__fp_one_fixed_tl - { {10000} {0000} {0000} {0000} {0000} {0000} ; } -\cs_new:Npn \__fp_fixed_continue:wn #1; #2 { #2 #1; } -\cs_new:Npn \__fp_fixed_add_one:wN #1#2; #3 + { {10000} {0000} {0000} {0000} {0000} {0000} \__fp_sep: } +\cs_new:Npn \__fp_fixed_continue:wn #1\__fp_sep: #2 { #2 #1\__fp_sep: } +\cs_new:Npn \__fp_fixed_add_one:wN #1#2\__fp_sep: #3 { \exp_after:wN #3 \exp_after:wN - { \int_value:w \__fp_int_eval:w \c__fp_myriad_int + #1 } #2 ; + { \int_value:w \__fp_int_eval:w \c__fp_myriad_int + #1 } #2 \__fp_sep: } -\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6; +\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6\__fp_sep: { \exp_after:wN \__fp_fixed_mul_after:wwn \int_value:w \__fp_int_eval:w \c__fp_leading_shift_int \exp_after:wN \__fp_pack:NNNNNw \int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int - + #1 ; {#2}{#3}{#4}{#5}; + + #1 \__fp_sep: {#2}{#3}{#4}{#5}\__fp_sep: } -\cs_new:Npn \__fp_fixed_mul_after:wwn #1; #2; #3 { #3 {#1} #2; } -\cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6; #7#8#9; +\cs_new:Npn \__fp_fixed_mul_after:wwn #1\__fp_sep: #2\__fp_sep: #3 + { #3 {#1} #2\__fp_sep: } +\cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6\__fp_sep: #7#8#9\__fp_sep: { \exp_after:wN \__fp_fixed_mul_after:wwn \int_value:w \__fp_int_eval:w \c__fp_leading_shift_int @@ -18840,29 +19030,29 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int + #4*#9 + #5*#8 + #6*#7 + ( #5*#9 + #6*#8 + #6*#9 / \c__fp_myriad_int ) - / \c__fp_myriad_int ; ; + / \c__fp_myriad_int \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 ; #7 ; #8 +\cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 \__fp_sep: #7 \__fp_sep: #8 { \exp_after:wN \__fp_fixed_div_int_after:Nw \exp_after:wN #8 \int_value:w \__fp_int_eval:w - 1 \__fp_fixed_div_int:wnN - #1; {#7} \__fp_fixed_div_int_auxi:wnn - #2; {#7} \__fp_fixed_div_int_auxi:wnn - #3; {#7} \__fp_fixed_div_int_auxi:wnn - #4; {#7} \__fp_fixed_div_int_auxi:wnn - #5; {#7} \__fp_fixed_div_int_auxi:wnn - #6; {#7} \__fp_fixed_div_int_auxii:wnn ; + #1\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn + #2\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn + #3\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn + #4\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn + #5\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn + #6\__fp_sep: {#7} \__fp_fixed_div_int_auxii:wnn \__fp_sep: } -\cs_new:Npn \__fp_fixed_div_int:wnN #1; #2 #3 +\cs_new:Npn \__fp_fixed_div_int:wnN #1\__fp_sep: #2 #3 { \exp_after:wN #3 - \int_value:w \__fp_int_eval:w #1 / #2 - 1 ; + \int_value:w \__fp_int_eval:w #1 / #2 - 1 \__fp_sep: {#2} {#1} } -\cs_new:Npn \__fp_fixed_div_int_auxi:wnn #1; #2 #3 +\cs_new:Npn \__fp_fixed_div_int_auxi:wnn #1\__fp_sep: #2 #3 { + #1 \exp_after:wN \__fp_fixed_div_int_pack:Nw @@ -18870,12 +19060,12 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_fixed_div_int:wnN \int_value:w \__fp_int_eval:w #3 - #1*#2 \__fp_int_eval_end: } -\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + 2 ; } -\cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2; { + #1; {#2} } -\cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2; { #1 {#2} } +\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1\__fp_sep: #2 #3 { + #1 + 2 \__fp_sep: } +\cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2\__fp_sep: { + #1\__fp_sep: {#2} } +\cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2\__fp_sep: { #1 {#2} } \cs_new:Npn \__fp_fixed_add:wwn { \__fp_fixed_add:Nnnnnwnn + } \cs_new:Npn \__fp_fixed_sub:wwn { \__fp_fixed_add:Nnnnnwnn - } -\cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6; #7#8 +\cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6\__fp_sep: #7#8 { \exp_after:wN \__fp_fixed_add_after:NNNNNwn \int_value:w \__fp_int_eval:w 9 9999 9998 + #2#3 #1 #7#8 @@ -18883,17 +19073,18 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \__fp_int_eval:w 1 9999 9998 + #4#5 \__fp_fixed_add:nnNnnnwn #6 #1 } -\cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 ; #8 +\cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 \__fp_sep: #8 { #3 #4#5 \exp_after:wN \__fp_fixed_add_pack:NNNNNwn - \int_value:w \__fp_int_eval:w 2 0000 0000 #3 #6#7 + #1#2 ; {#8} ; + \int_value:w \__fp_int_eval:w + 2 0000 0000 #3 #6#7 + #1#2 \__fp_sep: {#8} \__fp_sep: } -\cs_new:Npn \__fp_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6; #7 - { + #1 ; {#7} {#2#3#4#5} {#6} } -\cs_new:Npn \__fp_fixed_add_after:NNNNNwn 1 #1 #2#3#4#5 #6; #7 +\cs_new:Npn \__fp_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6\__fp_sep: #7 + { + #1 \__fp_sep: {#7} {#2#3#4#5} {#6} } +\cs_new:Npn \__fp_fixed_add_after:NNNNNwn 1 #1 #2#3#4#5 #6\__fp_sep: #7 { #7 {#1#2#3#4#5} {#6} } -\cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5; #6#7#8#9 +\cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5\__fp_sep: #6#7#8#9 { \exp_after:wN \__fp_fixed_mul_after:wwn \int_value:w \__fp_int_eval:w \c__fp_leading_shift_int @@ -18915,32 +19106,33 @@ Type H <return> for immediate help}\def~{\errmessage{% + ( #3*#9 + #4*#8 + \__fp_fixed_mul:nnnnnnnw #5 {#6}{#7} {#1}{#2} } -\cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 ; +\cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 \__fp_sep: { #1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c__fp_myriad_int - + #1*#3 + #5*#7 ; ; + + #1*#3 + #5*#7 \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8; +\cs_new:Npn \__fp_fixed_mul_add:wwwn #1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8\__fp_sep: { \exp_after:wN \__fp_fixed_mul_after:wwn \int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNw \int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int + #3 #4 \__fp_fixed_mul_add:Nwnnnwnnn + - + #5 #6 ; #2 ; #1 ; #2 ; + - + #7 #8 ; ; + + #5 #6 \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: + + + #7 #8 \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8; +\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn + #1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8\__fp_sep: { \exp_after:wN \__fp_fixed_mul_after:wwn \int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNw \int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int + #3 #4 \__fp_fixed_mul_add:Nwnnnwnnn - - + #5 #6 ; #2 ; #1 ; #2 ; - - + #7 #8 ; ; + + #5 #6 \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: - + + #7 #8 \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1; #2; +\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1\__fp_sep: #2\__fp_sep: { \exp_after:wN \__fp_fixed_mul_after:wwn \int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int @@ -18948,10 +19140,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int + 1 0000 0000 \__fp_fixed_mul_add:Nwnnnwnnn - - ; #2 ; #1 ; #2 ; - - ; ; + \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: - + \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2; #3#4#5#6; #7#8#9 +\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2\__fp_sep: #3#4#5#6\__fp_sep: #7#8#9 { #1 #7*#3 \exp_after:wN \__fp_pack_big:NNNNNNw @@ -18964,7 +19156,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int #1 \__fp_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9} } -\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5; #6#7#8#9 +\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5\__fp_sep: #6#7#8#9 { ( #1*#9 + #2*#8 + #3*#7 + #4*#6 ) \exp_after:wN \__fp_pack_big:NNNNNNw @@ -18972,10 +19164,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_fixed_mul_add:nnnnwnnwN { #6 + #4*#7 + #3*#8 + #2*#9 + #1 } { #7 + #4*#8 + #3*#9 + #2 } - {#1} #5; + {#1} #5\__fp_sep: {#6} } -\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5; #6#7#8; #9 +\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5\__fp_sep: #6#7#8\__fp_sep: #9 { #9 (#4* #1 *#7) #9 (#5*#6+#4* #2 *#7+#3*#8) / \c__fp_myriad_int @@ -18983,29 +19175,30 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__fp_ep_to_fixed:wwn #1,#2 { \exp_after:wN \__fp_ep_to_fixed_auxi:www - \int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \exp_after:wN ; + \int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \exp_after:wN \__fp_sep: \exp:w \exp_end_continue_f:w - \prg_replicate:nn { 4 - \int_max:nn {#1} { -32 } } { 0 } ; + \prg_replicate:nn { 4 - \int_max:nn {#1} { -32 } } { 0 } \__fp_sep: } -\cs_new:Npn \__fp_ep_to_fixed_auxi:www 1#1; #2; #3#4#5#6#7; +\cs_new:Npn \__fp_ep_to_fixed_auxi:www + 1#1\__fp_sep: #2\__fp_sep: #3#4#5#6#7\__fp_sep: { \__fp_pack_eight:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN - \__fp_ep_to_fixed_auxii:nnnnnnnwn ; + \__fp_ep_to_fixed_auxii:nnnnnnnwn \__fp_sep: #2 #1#3#4#5#6#7 0000 ! } -\cs_new:Npn \__fp_ep_to_fixed_auxii:nnnnnnnwn #1#2#3#4#5#6#7; #8! #9 - { #9 {#1#2}{#3}{#4}{#5}{#6}{#7}; } -\cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7; #8 +\cs_new:Npn \__fp_ep_to_fixed_auxii:nnnnnnnwn #1#2#3#4#5#6#7\__fp_sep: #8! #9 + { #9 {#1#2}{#3}{#4}{#5}{#6}{#7}\__fp_sep: } +\cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7\__fp_sep: #8 { \exp_after:wN #8 \int_value:w \__fp_int_eval:w #1 + 4 \exp_after:wN \use_i:nn \exp_after:wN \__fp_ep_to_ep_loop:N \int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \__fp_int_eval_end: - #3#4#5#6#7 ; ; ! + #3#4#5#6#7 \__fp_sep: \__fp_sep: ! } \cs_new:Npn \__fp_ep_to_ep_loop:N #1 { @@ -19017,27 +19210,29 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_ep_to_ep_loop:N } \cs_new:Npn \__fp_ep_to_ep_end:www - #1 \fi: \__fp_ep_to_ep_loop:N #2; #3! + #1 \fi: \__fp_ep_to_ep_loop:N #2\__fp_sep: #3! { \fi: - \if_meaning:w ; #1 + \if_meaning:w \__fp_sep: #1 - 2 * \c__fp_max_exponent_int \__fp_ep_to_ep_zero:ww \fi: \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN - \__fp_use_i:ww , ; - #1 #2 0000 0000 0000 0000 0000 0000 ; + \__fp_use_i:ww , \__fp_sep: + #1 #2 0000 0000 0000 0000 0000 0000 \__fp_sep: } -\cs_new:Npn \__fp_ep_to_ep_zero:ww \fi: #1; #2; #3; - { \fi: , {1000}{0000}{0000}{0000}{0000}{0000} ; } -\cs_new:Npn \__fp_ep_compare:wwww #1,#2#3#4#5#6#7; - { \__fp_ep_compare_aux:wwww {#1}{#2}{#3}{#4}{#5}; #6#7; } -\cs_new:Npn \__fp_ep_compare_aux:wwww #1;#2;#3,#4#5#6#7#8#9; +\cs_new:Npn \__fp_ep_to_ep_zero:ww \fi: #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: + { \fi: , {1000}{0000}{0000}{0000}{0000}{0000} \__fp_sep: } +\cs_new:Npn \__fp_ep_compare:wwww #1,#2#3#4#5#6#7\__fp_sep: + { \__fp_ep_compare_aux:wwww {#1}{#2}{#3}{#4}{#5}\__fp_sep: #6#7\__fp_sep: } +\cs_new:Npn \__fp_ep_compare_aux:wwww + #1\__fp_sep:#2\__fp_sep:#3,#4#5#6#7#8#9\__fp_sep: { \if_case:w - \__fp_compare_npos:nwnw #1; {#3}{#4}{#5}{#6}{#7}; \exp_stop_f: + \__fp_compare_npos:nwnw + #1\__fp_sep: {#3}{#4}{#5}{#6}{#7}\__fp_sep: \exp_stop_f: \if_int_compare:w #2 = #8#9 \exp_stop_f: 0 \else: @@ -19047,77 +19242,79 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: -1 \fi: } -\cs_new:Npn \__fp_ep_mul:wwwwn #1,#2; #3,#4; +\cs_new:Npn \__fp_ep_mul:wwwwn #1,#2\__fp_sep: #3,#4\__fp_sep: { - \__fp_ep_to_ep:wwN #3,#4; + \__fp_ep_to_ep:wwN #3,#4\__fp_sep: \__fp_fixed_continue:wn { - \__fp_ep_to_ep:wwN #1,#2; + \__fp_ep_to_ep:wwN #1,#2\__fp_sep: \__fp_ep_mul_raw:wwwwN } \__fp_fixed_continue:wn } -\cs_new:Npn \__fp_ep_mul_raw:wwwwN #1,#2; #3,#4; #5 +\cs_new:Npn \__fp_ep_mul_raw:wwwwN #1,#2\__fp_sep: #3,#4\__fp_sep: #5 { - \__fp_fixed_mul:wwn #2; #4; + \__fp_fixed_mul:wwn #2\__fp_sep: #4\__fp_sep: { \exp_after:wN #5 \int_value:w \__fp_int_eval:w #1 + #3 , } } -\cs_new:Npn \__fp_ep_div:wwwwn #1,#2; #3,#4; +\cs_new:Npn \__fp_ep_div:wwwwn #1,#2\__fp_sep: #3,#4\__fp_sep: { - \__fp_ep_to_ep:wwN #1,#2; + \__fp_ep_to_ep:wwN #1,#2\__fp_sep: \__fp_fixed_continue:wn { - \__fp_ep_to_ep:wwN #3,#4; + \__fp_ep_to_ep:wwN #3,#4\__fp_sep: \__fp_ep_div_esti:wwwwn } } -\cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3; #4, +\cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3\__fp_sep: #4, { \exp_after:wN \__fp_ep_div_estii:wwnnwwn \int_value:w \__fp_int_eval:w 10 0000 0000 / ( #2 + 1 ) - \exp_after:wN ; + \exp_after:wN \__fp_sep: \int_value:w \__fp_int_eval:w #4 - #1 + 1 , - {#2} #3; + {#2} #3\__fp_sep: } -\cs_new:Npn \__fp_ep_div_estii:wwnnwwn #1; #2,#3#4#5; #6; #7 +\cs_new:Npn \__fp_ep_div_estii:wwnnwwn + #1\__fp_sep: #2,#3#4#5\__fp_sep: #6\__fp_sep: #7 { \exp_after:wN \__fp_ep_div_estiii:NNNNNwwwn \int_value:w \__fp_int_eval:w 10 0000 0000 - 1750 - + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) ; - {#3}{#4}#5; #6; { #7 #2, } + + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) \__fp_sep: + {#3}{#4}#5\__fp_sep: #6\__fp_sep: { #7 #2, } } -\cs_new:Npn \__fp_ep_div_estiii:NNNNNwwwn 1#1#2#3#4#5#6; #7; +\cs_new:Npn \__fp_ep_div_estiii:NNNNNwwwn 1#1#2#3#4#5#6\__fp_sep: #7\__fp_sep: { - \__fp_fixed_mul_short:wwn #7; {#1}{#2#3#4#5}{#6}; + \__fp_fixed_mul_short:wwn #7\__fp_sep: {#1}{#2#3#4#5}{#6}\__fp_sep: \__fp_ep_div_epsi:wnNNNNNn {#1#2#3#4}#5#6 \__fp_fixed_mul:wwn } -\cs_new:Npn \__fp_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6; +\cs_new:Npn \__fp_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6\__fp_sep: { \exp_after:wN \__fp_ep_div_epsii:wwnNNNNNn \int_value:w \__fp_int_eval:w 1 9998 - #2 \exp_after:wN \__fp_ep_div_eps_pack:NNNNNw \int_value:w \__fp_int_eval:w 1 9999 9998 - #3#4 \exp_after:wN \__fp_ep_div_eps_pack:NNNNNw - \int_value:w \__fp_int_eval:w 2 0000 0000 - #5#6 ; ; + \int_value:w \__fp_int_eval:w 2 0000 0000 - #5#6 \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6; - { + #1 ; {#2#3#4#5} {#6} } -\cs_new:Npn \__fp_ep_div_epsii:wwnNNNNNn 1#1; #2; #3#4#5#6#7#8 +\cs_new:Npn \__fp_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6\__fp_sep: + { + #1 \__fp_sep: {#2#3#4#5} {#6} } +\cs_new:Npn \__fp_ep_div_epsii:wwnNNNNNn 1#1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8 { - \__fp_fixed_mul:wwn {0000}{#1}#2; {0000}{#1}#2; + \__fp_fixed_mul:wwn {0000}{#1}#2\__fp_sep: {0000}{#1}#2\__fp_sep: \__fp_fixed_add_one:wN - \__fp_fixed_mul:wwn {10000} {#1} #2 ; + \__fp_fixed_mul:wwn {10000} {#1} #2 \__fp_sep: { - \__fp_fixed_mul_short:wwn {0000}{#1}#2; {#3}{#4#5#6#7}{#8000}; + \__fp_fixed_mul_short:wwn + {0000}{#1}#2\__fp_sep: {#3}{#4#5#6#7}{#8000}\__fp_sep: \__fp_fixed_div_myriad:wn \__fp_fixed_mul:wwn } - \__fp_fixed_add:wwn {#3}{#4#5#6#7}{#8000}{0000}{0000}{0000}; + \__fp_fixed_add:wwn {#3}{#4#5#6#7}{#8000}{0000}{0000}{0000}\__fp_sep: } -\cs_new:Npn \__fp_ep_isqrt:wwn #1,#2; +\cs_new:Npn \__fp_ep_isqrt:wwn #1,#2\__fp_sep: { - \__fp_ep_to_ep:wwN #1,#2; + \__fp_ep_to_ep:wwN #1,#2\__fp_sep: \__fp_ep_isqrt_auxi:wwn } \cs_new:Npn \__fp_ep_isqrt_auxi:wwn #1, @@ -19128,10 +19325,10 @@ Type H <return> for immediate help}\def~{\errmessage{% { (1 - #1) / 2 , 535 , { 0 } { } } { 1 - #1 / 2 , 168 , { } { 0 } } } -\cs_new:Npn \__fp_ep_isqrt_auxii:wwnnnwn #1, #2, #3#4 #5#6; #7 +\cs_new:Npn \__fp_ep_isqrt_auxii:wwnnnwn #1, #2, #3#4 #5#6\__fp_sep: #7 { \__fp_ep_isqrt_esti:wwwnnwn #2, 0, #5, {#3} {#4} - {#5} #6 ; { #7 #1 , } + {#5} #6 \__fp_sep: { #7 #1 , } } \cs_new:Npn \__fp_ep_isqrt_esti:wwwnnwn #1, #2, #3, #4 { @@ -19147,45 +19344,47 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__fp_ep_isqrt_estiii:NNNNNwwwn \int_value:w \__fp_int_eval:w 1000 0000 + #2 * #2 #5 * 5 - \exp_after:wN , \int_value:w \__fp_int_eval:w 10000 + #2 ; + \exp_after:wN , \int_value:w \__fp_int_eval:w 10000 + #2 \__fp_sep: } -\cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn 1#1#2#3#4#5#6, 1#7#8; #9; +\cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn + 1#1#2#3#4#5#6, 1#7#8\__fp_sep: #9\__fp_sep: { - \__fp_fixed_mul_short:wwn #9; {#1} {#2#3#4#5} {#600} ; + \__fp_fixed_mul_short:wwn #9\__fp_sep: {#1} {#2#3#4#5} {#600} \__fp_sep: \__fp_ep_isqrt_epsi:wN - \__fp_fixed_mul_short:wwn {#7} {#80} {0000} ; + \__fp_fixed_mul_short:wwn {#7} {#80} {0000} \__fp_sep: } -\cs_new:Npn \__fp_ep_isqrt_epsi:wN #1; +\cs_new:Npn \__fp_ep_isqrt_epsi:wN #1\__fp_sep: { - \__fp_fixed_sub:wwn {15000}{0000}{0000}{0000}{0000}{0000}; #1; - \__fp_ep_isqrt_epsii:wwN #1; - \__fp_ep_isqrt_epsii:wwN #1; - \__fp_ep_isqrt_epsii:wwN #1; + \__fp_fixed_sub:wwn {15000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1\__fp_sep: + \__fp_ep_isqrt_epsii:wwN #1\__fp_sep: + \__fp_ep_isqrt_epsii:wwN #1\__fp_sep: + \__fp_ep_isqrt_epsii:wwN #1\__fp_sep: } -\cs_new:Npn \__fp_ep_isqrt_epsii:wwN #1; #2; +\cs_new:Npn \__fp_ep_isqrt_epsii:wwN #1\__fp_sep: #2\__fp_sep: { - \__fp_fixed_mul:wwn #1; #1; - \__fp_fixed_mul_sub_back:wwwn #2; - {15000}{0000}{0000}{0000}{0000}{0000}; - \__fp_fixed_mul:wwn #1; + \__fp_fixed_mul:wwn #1\__fp_sep: #1\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep: + {15000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: + \__fp_fixed_mul:wwn #1\__fp_sep: } \cs_new:Npn \__fp_ep_to_float_o:wwN #1, { + \__fp_int_eval:w #1 \__fp_fixed_to_float_o:wN } -\cs_new:Npn \__fp_ep_inv_to_float_o:wwN #1,#2; +\cs_new:Npn \__fp_ep_inv_to_float_o:wwN #1,#2\__fp_sep: { - \__fp_ep_div:wwwwn 1,{1000}{0000}{0000}{0000}{0000}{0000}; #1,#2; + \__fp_ep_div:wwwwn + 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1,#2\__fp_sep: \__fp_ep_to_float_o:wwN } \cs_new:Npn \__fp_fixed_inv_to_float_o:wN { \__fp_ep_inv_to_float_o:wwN 0, } -\cs_new:Npn \__fp_fixed_to_float_rad_o:wN #1; +\cs_new:Npn \__fp_fixed_to_float_rad_o:wN #1\__fp_sep: { - \__fp_fixed_mul:wwn #1; {5729}{5779}{5130}{8232}{0876}{7981}; + \__fp_fixed_mul:wwn #1\__fp_sep: {5729}{5779}{5130}{8232}{0876}{7981}\__fp_sep: { \__fp_ep_to_float_o:wwN 2, } } -\cs_new:Npn \__fp_fixed_to_float_o:Nw #1#2; - { \__fp_fixed_to_float_o:wN #2; #1 } -\cs_new:Npn \__fp_fixed_to_float_o:wN #1#2#3#4#5#6; #7 +\cs_new:Npn \__fp_fixed_to_float_o:Nw #1#2\__fp_sep: + { \__fp_fixed_to_float_o:wN #2\__fp_sep: #1 } +\cs_new:Npn \__fp_fixed_to_float_o:wN #1#2#3#4#5#6\__fp_sep: #7 { % for the 8-digit-at-the-start thing + \__fp_int_eval:w \c__fp_block_int \exp_after:wN \exp_after:wN @@ -19196,8 +19395,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w 1#2 \exp_after:wN \__fp_use_none_stop_f:n \int_value:w 1#3#4 \exp_after:wN \__fp_use_none_stop_f:n \int_value:w 1#5#6 - \exp_after:wN ; - \exp_after:wN ; + \exp_after:wN \__fp_sep: + \exp_after:wN \__fp_sep: } \cs_new:Npn \__fp_fixed_to_loop:N #1 { @@ -19209,36 +19408,36 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN #1 \fi: } -\cs_new:Npn \__fp_fixed_to_loop_end:w #1 #2 ; +\cs_new:Npn \__fp_fixed_to_loop_end:w #1 #2 \__fp_sep: { - \if_meaning:w ; #1 + \if_meaning:w \__fp_sep: #1 \exp_after:wN \__fp_fixed_to_float_zero:w \else: \exp_after:wN \__fp_pack_twice_four:wNNNNNNNN \exp_after:wN \__fp_pack_twice_four:wNNNNNNNN \exp_after:wN \__fp_fixed_to_float_pack:ww - \exp_after:wN ; + \exp_after:wN \__fp_sep: \fi: - #1 #2 0000 0000 0000 0000 ; + #1 #2 0000 0000 0000 0000 \__fp_sep: } -\cs_new:Npn \__fp_fixed_to_float_zero:w ; 0000 0000 0000 0000 ; +\cs_new:Npn \__fp_fixed_to_float_zero:w \__fp_sep: 0000 0000 0000 0000 \__fp_sep: { - - 2 * \c__fp_max_exponent_int ; - {0000} {0000} {0000} {0000} ; + - 2 * \c__fp_max_exponent_int \__fp_sep: + {0000} {0000} {0000} {0000} \__fp_sep: } -\cs_new:Npn \__fp_fixed_to_float_pack:ww #1 ; #2#3 ; ; +\cs_new:Npn \__fp_fixed_to_float_pack:ww #1 \__fp_sep: #2#3 \__fp_sep: \__fp_sep: { \if_int_compare:w #2 > 4 \exp_stop_f: \exp_after:wN \__fp_fixed_to_float_round_up:wnnnnw \fi: - ; #1 ; + \__fp_sep: #1 \__fp_sep: } -\cs_new:Npn \__fp_fixed_to_float_round_up:wnnnnw ; #1#2#3#4 ; +\cs_new:Npn \__fp_fixed_to_float_round_up:wnnnnw \__fp_sep: #1#2#3#4 \__fp_sep: { \exp_after:wN \__fp_basics_pack_high:NNNNNw \int_value:w \__fp_int_eval:w 1 #1#2 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_value:w \__fp_int_eval:w 1 #3#4 + 1 ; + \int_value:w \__fp_int_eval:w 1 #3#4 + 1 \__fp_sep: } %% File: l3fp-expo.dtx \cs_new:Npn \__fp_parse_word_exp:N @@ -19247,16 +19446,25 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_parse_unary_function:NNN \__fp_ln_o:w ? } \cs_new:Npn \__fp_parse_word_fact:N { \__fp_parse_unary_function:NNN \__fp_fact_o:w ? } -\tl_const:Nn \c__fp_ln_i_fixed_tl { {0000}{0000}{0000}{0000}{0000}{0000};} -\tl_const:Nn \c__fp_ln_ii_fixed_tl { {6931}{4718}{0559}{9453}{0941}{7232};} -\tl_const:Nn \c__fp_ln_iii_fixed_tl {{10986}{1228}{8668}{1096}{9139}{5245};} -\tl_const:Nn \c__fp_ln_iv_fixed_tl {{13862}{9436}{1119}{8906}{1883}{4464};} -\tl_const:Nn \c__fp_ln_vi_fixed_tl {{17917}{5946}{9228}{0550}{0081}{2477};} -\tl_const:Nn \c__fp_ln_vii_fixed_tl {{19459}{1014}{9055}{3133}{0510}{5353};} -\tl_const:Nn \c__fp_ln_viii_fixed_tl{{20794}{4154}{1679}{8359}{2825}{1696};} -\tl_const:Nn \c__fp_ln_ix_fixed_tl {{21972}{2457}{7336}{2193}{8279}{0490};} -\tl_const:Nn \c__fp_ln_x_fixed_tl {{23025}{8509}{2994}{0456}{8401}{7991};} -\cs_new:Npn \__fp_ln_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\tl_const:Nn \c__fp_ln_i_fixed_tl + { {0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:} +\tl_const:Nn \c__fp_ln_ii_fixed_tl + { {6931}{4718}{0559}{9453}{0941}{7232}\__fp_sep:} +\tl_const:Nn \c__fp_ln_iii_fixed_tl + {{10986}{1228}{8668}{1096}{9139}{5245}\__fp_sep:} +\tl_const:Nn \c__fp_ln_iv_fixed_tl + {{13862}{9436}{1119}{8906}{1883}{4464}\__fp_sep:} +\tl_const:Nn \c__fp_ln_vi_fixed_tl + {{17917}{5946}{9228}{0550}{0081}{2477}\__fp_sep:} +\tl_const:Nn \c__fp_ln_vii_fixed_tl + {{19459}{1014}{9055}{3133}{0510}{5353}\__fp_sep:} +\tl_const:Nn \c__fp_ln_viii_fixed_tl + {{20794}{4154}{1679}{8359}{2825}{1696}\__fp_sep:} +\tl_const:Nn \c__fp_ln_ix_fixed_tl + {{21972}{2457}{7336}{2193}{8279}{0490}\__fp_sep:} +\tl_const:Nn \c__fp_ln_x_fixed_tl + {{23025}{8509}{2994}{0456}{8401}{7991}\__fp_sep:} +\cs_new:Npn \__fp_ln_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_meaning:w 2 #3 \__fp_case_use:nw { \__fp_invalid_operation_o:nw { ln } } @@ -19268,9 +19476,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \__fp_case_return_same_o:w \fi: - \__fp_ln_npos_o:w \s__fp \__fp_chk:w #2#3#4; + \__fp_ln_npos_o:w \s__fp \__fp_chk:w #2#3#4\__fp_sep: } -\cs_new:Npn \__fp_ln_npos_o:w \s__fp \__fp_chk:w 10#1#2#3; +\cs_new:Npn \__fp_ln_npos_o:w \s__fp \__fp_chk:w 10#1#2#3\__fp_sep: { %^^A todo: ln(1) should be "exact zero", not "underflow" \exp_after:wN \__fp_sanitize:Nw \int_value:w % for the overall sign @@ -19302,9 +19510,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: 2 \else: 1 \fi: - ; { #1 #2 #3 #4 } + \__fp_sep: { #1 #2 #3 #4 } } -\cs_new:Npn \__fp_ln_x_ii:wnnnn #1; #2#3#4#5 +\cs_new:Npn \__fp_ln_x_ii:wnnnn #1\__fp_sep: #2#3#4#5 { \exp_after:wN \__fp_ln_div_after:Nw \cs:w c__fp_ln_ \__fp_int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end: @@ -19314,22 +19522,22 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_ln_x_iii_var:NNNNNw \int_value:w \__fp_int_eval:w 9999 9990 + #1*#2#3 + \exp_after:wN \__fp_ln_x_iii:NNNNNNw - \int_value:w \__fp_int_eval:w 10 0000 0000 + #1*#4#5 ; + \int_value:w \__fp_int_eval:w 10 0000 0000 + #1*#4#5 \__fp_sep: {20000} {0000} {0000} {0000} } %^^A todo: reoptimize (a generalization attempt failed). -\cs_new:Npn \__fp_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7; - { #1#2; {#3#4#5#6} {#7} } -\cs_new:Npn \__fp_ln_x_iii_var:NNNNNw #1 #2#3#4#5 #6; +\cs_new:Npn \__fp_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep: + { #1#2\__fp_sep: {#3#4#5#6} {#7} } +\cs_new:Npn \__fp_ln_x_iii_var:NNNNNw #1 #2#3#4#5 #6\__fp_sep: { - #1#2#3#4#5 + 1 ; + #1#2#3#4#5 + 1 \__fp_sep: {#1#2#3#4#5} {#6} } -\cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1; #2#3#4#5 #6#7#8#9 +\cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1\__fp_sep: #2#3#4#5 #6#7#8#9 { \exp_after:wN \__fp_div_significand_pack:NNN \int_value:w \__fp_int_eval:w - \__fp_ln_div_i:w #1 ; - #6 #7 ; {#8} {#9} + \__fp_ln_div_i:w #1 \__fp_sep: + #6 #7 \__fp_sep: {#8} {#9} {#2} {#3} {#4} {#5} { \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 } { \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 } @@ -19337,25 +19545,27 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 } { \exp_after:wN \__fp_ln_div_vi:wwn \int_value:w #1 } } -\cs_new:Npn \__fp_ln_div_i:w #1; +\cs_new:Npn \__fp_ln_div_i:w #1\__fp_sep: { \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_value:w \__fp_int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1 + \int_value:w \__fp_int_eval:w 999999 + 2 0000 0000 / #1 \__fp_sep: % Q1 } -\cs_new:Npn \__fp_ln_div_ii:wwn #1; #2;#3 % y; B1;B2 <- for k=1 +\cs_new:Npn \__fp_ln_div_ii:wwn + #1\__fp_sep: #2\__fp_sep:#3 % y\__fp_sep: B1\__fp_sep:B2 <- for k=1 { \exp_after:wN \__fp_div_significand_pack:NNN \int_value:w \__fp_int_eval:w \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_value:w \__fp_int_eval:w 999999 + #2 #3 / #1 ; % Q2 - #2 #3 ; + \int_value:w \__fp_int_eval:w 999999 + #2 #3 / #1 \__fp_sep: % Q2 + #2 #3 \__fp_sep: } -\cs_new:Npn \__fp_ln_div_vi:wwn #1; #2;#3#4#5 #6#7#8#9 %y;F1;F2F3F4x1x2x3x4 +\cs_new:Npn \__fp_ln_div_vi:wwn + #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7#8#9 %y\__fp_sep:F1\__fp_sep:F2F3F4x1x2x3x4 { \exp_after:wN \__fp_div_significand_pack:NNN - \int_value:w \__fp_int_eval:w 1000000 + #2 #3 / #1 ; % Q6 + \int_value:w \__fp_int_eval:w 1000000 + #2 #3 / #1 \__fp_sep: % Q6 } -\cs_new:Npn \__fp_ln_div_after:Nw #1#2; +\cs_new:Npn \__fp_ln_div_after:Nw #1#2\__fp_sep: { \if_meaning:w 0 #2 \exp_after:wN \__fp_ln_t_small:Nw @@ -19365,19 +19575,22 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: #1 } -\cs_new:Npn \__fp_ln_t_small:Nw #1 #2; #3; #4; #5; #6; #7; +\cs_new:Npn \__fp_ln_t_small:Nw + #1 #2\__fp_sep: #3\__fp_sep: #4\__fp_sep: #5\__fp_sep: #6\__fp_sep: #7\__fp_sep: { \exp_after:wN \__fp_ln_t_large:NNw \exp_after:wN + % <sign> \exp_after:wN #1 - \int_value:w \__fp_int_eval:w 9999 - #2 \exp_after:wN ; - \int_value:w \__fp_int_eval:w 9999 - #3 \exp_after:wN ; - \int_value:w \__fp_int_eval:w 9999 - #4 \exp_after:wN ; - \int_value:w \__fp_int_eval:w 9999 - #5 \exp_after:wN ; - \int_value:w \__fp_int_eval:w 9999 - #6 \exp_after:wN ; - \int_value:w \__fp_int_eval:w 1 0000 - #7 ; - } -\cs_new:Npn \__fp_ln_t_large:NNw #1 #2 #3; #4; #5; #6; #7; #8; + \int_value:w \__fp_int_eval:w 9999 - #2 \exp_after:wN \__fp_sep: + \int_value:w \__fp_int_eval:w 9999 - #3 \exp_after:wN \__fp_sep: + \int_value:w \__fp_int_eval:w 9999 - #4 \exp_after:wN \__fp_sep: + \int_value:w \__fp_int_eval:w 9999 - #5 \exp_after:wN \__fp_sep: + \int_value:w \__fp_int_eval:w 9999 - #6 \exp_after:wN \__fp_sep: + \int_value:w \__fp_int_eval:w 1 0000 - #7 \__fp_sep: + } +\cs_new:Npn \__fp_ln_t_large:NNw + #1 #2 + #3\__fp_sep: #4\__fp_sep: #5\__fp_sep: #6\__fp_sep: #7\__fp_sep: #8\__fp_sep: { \exp_after:wN \__fp_ln_square_t_after:w \int_value:w \__fp_int_eval:w 9999 0000 + #3*#3 @@ -19391,7 +19604,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \__fp_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 - % ; ; ; + % \__fp_sep: \__fp_sep: \__fp_sep: \exp_after:wN \__fp_ln_twice_t_after:w \int_value:w \__fp_int_eval:w -1 + 2*#3 \exp_after:wN \__fp_ln_twice_t_pack:Nw @@ -19403,48 +19616,53 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_ln_twice_t_pack:Nw \int_value:w \__fp_int_eval:w 9999 + 2*#7 \exp_after:wN \__fp_ln_twice_t_pack:Nw - \int_value:w \__fp_int_eval:w 10000 + 2*#8 ; ; + \int_value:w \__fp_int_eval:w 10000 + 2*#8 \__fp_sep: \__fp_sep: { \__fp_ln_c:NwNw #1 } #2 } -\cs_new:Npn \__fp_ln_twice_t_pack:Nw #1 #2; { + #1 ; {#2} } -\cs_new:Npn \__fp_ln_twice_t_after:w #1; { ;;; {#1} } -\cs_new:Npn \__fp_ln_square_t_pack:NNNNNw #1 #2#3#4#5 #6; - { + #1#2#3#4#5 ; {#6} } -\cs_new:Npn \__fp_ln_square_t_after:w 1 0 #1#2#3 #4; +\cs_new:Npn \__fp_ln_twice_t_pack:Nw #1 #2\__fp_sep: { + #1 \__fp_sep: {#2} } +\cs_new:Npn \__fp_ln_twice_t_after:w #1\__fp_sep: + { \__fp_sep:\__fp_sep:\__fp_sep: {#1} } +\cs_new:Npn \__fp_ln_square_t_pack:NNNNNw #1 #2#3#4#5 #6\__fp_sep: + { + #1#2#3#4#5 \__fp_sep: {#6} } +\cs_new:Npn \__fp_ln_square_t_after:w 1 0 #1#2#3 #4\__fp_sep: { \__fp_ln_Taylor:wwNw {0#1#2#3} {#4} } \cs_new:Npn \__fp_ln_Taylor:wwNw - { \__fp_ln_Taylor_loop:www 21 ; {0000}{0000}{0000}{0000}{0000}{0000} ; } -\cs_new:Npn \__fp_ln_Taylor_loop:www #1; #2; #3; + { + \__fp_ln_Taylor_loop:www + 21 \__fp_sep: {0000}{0000}{0000}{0000}{0000}{0000} \__fp_sep: + } +\cs_new:Npn \__fp_ln_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: { \if_int_compare:w #1 = \c_one_int \__fp_ln_Taylor_break:w \fi: - \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1; - \__fp_fixed_add:wwn #2; - \__fp_fixed_mul:wwn #3; + \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1\__fp_sep: + \__fp_fixed_add:wwn #2\__fp_sep: + \__fp_fixed_mul:wwn #3\__fp_sep: { \exp_after:wN \__fp_ln_Taylor_loop:www - \int_value:w \__fp_int_eval:w #1 - 2 ; + \int_value:w \__fp_int_eval:w #1 - 2 \__fp_sep: } - #3; + #3\__fp_sep: } -\cs_new:Npn \__fp_ln_Taylor_break:w \fi: #1 \__fp_fixed_add:wwn #2#3; #4 ;; +\cs_new:Npn \__fp_ln_Taylor_break:w + \fi: #1 \__fp_fixed_add:wwn #2#3\__fp_sep: #4 \__fp_sep:\__fp_sep: { \fi: \exp_after:wN \__fp_fixed_mul:wwn - \exp_after:wN { \int_value:w \__fp_int_eval:w 10000 + #2 } #3; + \exp_after:wN { \int_value:w \__fp_int_eval:w 10000 + #2 } #3\__fp_sep: } -\cs_new:Npn \__fp_ln_c:NwNw #1 #2; #3 +\cs_new:Npn \__fp_ln_c:NwNw #1 #2\__fp_sep: #3 { \if_meaning:w + #1 \exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_sub:wwn \else: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_add:wwn \fi: - #3 #2 ; + #3 #2 \__fp_sep: } -\cs_new:Npn \__fp_ln_exponent:wn #1; #2 +\cs_new:Npn \__fp_ln_exponent:wn #1\__fp_sep: #2 { \if_case:w #2 \exp_stop_f: 0 \__fp_case_return:nw { \__fp_fixed_to_float_o:Nw 2 } @@ -19461,25 +19679,25 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_fixed_add:wwn \int_value:w - \fi: \fi: - #2; #1; + #2\__fp_sep: #1\__fp_sep: } -\cs_new:Npn \__fp_ln_exponent_one:ww 1; #1; +\cs_new:Npn \__fp_ln_exponent_one:ww 1\__fp_sep: #1\__fp_sep: { 0 - \exp_after:wN \__fp_fixed_sub:wwn \c__fp_ln_x_fixed_tl #1; + \exp_after:wN \__fp_fixed_sub:wwn \c__fp_ln_x_fixed_tl #1\__fp_sep: \__fp_fixed_to_float_o:wN 0 } -\cs_new:Npn \__fp_ln_exponent_small:NNww #1#2#3; #4#5#6#7#8#9; +\cs_new:Npn \__fp_ln_exponent_small:NNww #1#2#3\__fp_sep: #4#5#6#7#8#9\__fp_sep: { 4 \exp_after:wN \__fp_fixed_mul:wwn \c__fp_ln_x_fixed_tl - {#3}{0000}{0000}{0000}{0000}{0000} ; + {#3}{0000}{0000}{0000}{0000}{0000} \__fp_sep: #2 - {0000}{#4}{#5}{#6}{#7}{#8}; + {0000}{#4}{#5}{#6}{#7}{#8}\__fp_sep: \__fp_fixed_to_float_o:wN #1 } -\cs_new:Npn \__fp_exp_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_exp_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_return_o:Nw \c_one_fp @@ -19496,7 +19714,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2#3#4; + \s__fp \__fp_chk:w #2#3#4\__fp_sep: } \cs_new:Npn \__fp_exp_normal_o:w \s__fp \__fp_chk:w 1#1 { @@ -19506,7 +19724,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_exp_pos_o:NNwnw - \__fp_fixed_inv_to_float_o:wN \fi: } -\cs_new:Npn \__fp_exp_pos_o:NNwnw #1#2#3 \fi: #4#5; +\cs_new:Npn \__fp_exp_pos_o:NNwnw #1#2#3 \fi: #4#5\__fp_sep: { \fi: \if_int_compare:w #4 > \c__fp_max_exp_exponent_int @@ -19545,33 +19763,33 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN #1 \exp_after:wN #2 } -\cs_new:Npn \__fp_exp_Taylor:Nnnwn #1#2#3 #4; #5 #6 +\cs_new:Npn \__fp_exp_Taylor:Nnnwn #1#2#3 #4\__fp_sep: #5 #6 { #6 \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_exp_Taylor_ii:ww - ; #2#3#4 0000 0000 ; + \__fp_sep: #2#3#4 0000 0000 \__fp_sep: } -\cs_new:Npn \__fp_exp_Taylor_ii:ww #1; #2; - { \__fp_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s__fp_stop } -\cs_new:Npn \__fp_exp_Taylor_loop:www #1; #2; #3; +\cs_new:Npn \__fp_exp_Taylor_ii:ww #1\__fp_sep: #2\__fp_sep: + { \__fp_exp_Taylor_loop:www 10 \__fp_sep: #1 \__fp_sep: #1 \__fp_sep: \s__fp_stop } +\cs_new:Npn \__fp_exp_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: { \if_int_compare:w #1 = \c_one_int \exp_after:wN \__fp_exp_Taylor_break:Nww \fi: - \__fp_fixed_div_int:wwN #3 ; #1 ; + \__fp_fixed_div_int:wwN #3 \__fp_sep: #1 \__fp_sep: \__fp_fixed_add_one:wN - \__fp_fixed_mul:wwn #2 ; + \__fp_fixed_mul:wwn #2 \__fp_sep: { \exp_after:wN \__fp_exp_Taylor_loop:www - \int_value:w \__fp_int_eval:w #1 - 1 ; - #2 ; + \int_value:w \__fp_int_eval:w #1 - 1 \__fp_sep: + #2 \__fp_sep: } } -\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2; #3 \s__fp_stop - { \__fp_fixed_add_one:wN #2 ; } +\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2\__fp_sep: #3 \s__fp_stop + { \__fp_fixed_add_one:wN #2 \__fp_sep: } \intarray_const_from_clist:Nn \c__fp_exp_intarray { 1 , 1 1105 1709 , 1 1807 5647 , 1 6248 1171 , @@ -19629,23 +19847,23 @@ Type H <return> for immediate help}\def~{\errmessage{% 34744 , 1 3618 6973 , 1 3140 0875 , 1 3856 4102 , 39087 , 1 3186 9209 , 1 6113 3900 , 1 6705 9685 , } -\cs_new:Npn \__fp_exp_pos_large:NnnNwn #1#2#3 #4#5; #6 +\cs_new:Npn \__fp_exp_pos_large:NnnNwn #1#2#3 #4#5\__fp_sep: #6 { \exp_after:wN \exp_after:wN \exp_after:wN \__fp_exp_large:NwN \exp_after:wN \exp_after:wN \exp_after:wN #6 \exp_after:wN \c__fp_one_fixed_tl \int_value:w #3 #4 \exp_stop_f: - #5 00000 ; + #5 00000 \__fp_sep: } -\cs_new:Npn \__fp_exp_large:NwN #1#2; #3 +\cs_new:Npn \__fp_exp_large:NwN #1#2\__fp_sep: #3 { \if_case:w #3 ~ \exp_after:wN \__fp_fixed_continue:wn \else: \exp_after:wN \__fp_exp_intarray:w - \int_value:w \__fp_int_eval:w 36 * #1 + 4 * #3 \exp_after:wN ; + \int_value:w \__fp_int_eval:w 36 * #1 + 4 * #3 \exp_after:wN \__fp_sep: \fi: - #2; + #2\__fp_sep: { \if_meaning:w 0 #1 \exp_after:wN \__fp_exp_large_after:wwn @@ -19655,7 +19873,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: } } -\cs_new:Npn \__fp_exp_intarray:w #1 ; +\cs_new:Npn \__fp_exp_intarray:w #1 \__fp_sep: { + \__kernel_intarray_item:Nn \c__fp_exp_intarray @@ -19670,16 +19888,18 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_value:w \__kernel_intarray_item:Nn \c__fp_exp_intarray { \__fp_int_eval:w #1 - 1 } \exp_after:wN \__fp_exp_intarray_aux:w - \int_value:w \__kernel_intarray_item:Nn \c__fp_exp_intarray {#1} ; ; + \int_value:w \__kernel_intarray_item:Nn + \c__fp_exp_intarray {#1} \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_exp_intarray_aux:w 1 #1#2#3#4#5 ; { ; {#1#2#3#4} {#5} } -\cs_new:Npn \__fp_exp_large_after:wwn #1; #2; #3 +\cs_new:Npn \__fp_exp_intarray_aux:w 1 #1#2#3#4#5 \__fp_sep: + { \__fp_sep: {#1#2#3#4} {#5} } +\cs_new:Npn \__fp_exp_large_after:wwn #1\__fp_sep: #2\__fp_sep: #3 { - \__fp_exp_Taylor:Nnnwn ? { } { } 0 #2; {} #3 - \__fp_fixed_mul:wwn #1; + \__fp_exp_Taylor:Nnnwn ? { } { } 0 #2\__fp_sep: {} #3 + \__fp_fixed_mul:wwn #1\__fp_sep: } \cs_new:cpn { __fp_ \iow_char:N \^ _o:ww } - \s__fp \__fp_chk:w #1#2#3; \s__fp \__fp_chk:w #4#5#6; + \s__fp \__fp_chk:w #1#2#3\__fp_sep: \s__fp \__fp_chk:w #4#5#6\__fp_sep: { \if_meaning:w 0 #4 \__fp_case_return_o:Nw \c_one_fp @@ -19698,13 +19918,13 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \exp_after:wN \__fp_pow_zero_or_inf:ww \fi: - \s__fp \__fp_chk:w #1#2#3; + \s__fp \__fp_chk:w #1#2#3\__fp_sep: } - { \s__fp \__fp_chk:w #4#5#6; \s__fp \__fp_chk:w #1#2#3; } - \s__fp \__fp_chk:w #4#5#6; + { \s__fp \__fp_chk:w #4#5#6\__fp_sep: \s__fp \__fp_chk:w #1#2#3\__fp_sep: } + \s__fp \__fp_chk:w #4#5#6\__fp_sep: } \cs_new:Npn \__fp_pow_zero_or_inf:ww - \s__fp \__fp_chk:w #1#2; \s__fp \__fp_chk:w #3#4 + \s__fp \__fp_chk:w #1#2\__fp_sep: \s__fp \__fp_chk:w #3#4 { \if_meaning:w 1 #4 \__fp_case_return_same_o:w @@ -19721,13 +19941,13 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_case_use:nw { \__fp_division_by_zero_o:NNww \c_inf_fp ^ - \s__fp \__fp_chk:w #1 #2 ; + \s__fp \__fp_chk:w #1 #2 \__fp_sep: } \fi: \s__fp \__fp_chk:w #3#4 } \cs_new:Npn \__fp_pow_normal_o:ww - \s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5 + \s__fp \__fp_chk:w 1 #1#2#3\__fp_sep: \s__fp \__fp_chk:w #4#5 { \if:w 0 \__fp_str_if_eq:nn { #2 #3 } { 1 {1000} {0000} {0000} {0000} } \if_int_compare:w #4 #1 = 32 \exp_stop_f: @@ -19751,7 +19971,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \__fp_case_return_ii_o:ww \fi: - \s__fp \__fp_chk:w 1 #1 {#2} #3 ; + \s__fp \__fp_chk:w 1 #1 {#2} #3 \__fp_sep: \s__fp \__fp_chk:w #4 #5 } \cs_new:Npn \__fp_pow_npos_o:Nww #1 \s__fp \__fp_chk:w 1#2#3 @@ -19770,17 +19990,18 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: {#3} } -\cs_new:Npn \__fp_pow_npos_aux:NNnww #1#2#3#4#5; \s__fp \__fp_chk:w 1#6#7#8; +\cs_new:Npn \__fp_pow_npos_aux:NNnww + #1#2#3#4#5\__fp_sep: \s__fp \__fp_chk:w 1#6#7#8\__fp_sep: { #1 \__fp_int_eval:w \__fp_ln_significand:NNNNnnnN #4#5 \__fp_pow_exponent:wnN {#3} - \__fp_fixed_mul:wwn #8 {0000}{0000} ; - \__fp_pow_B:wwN #7; + \__fp_fixed_mul:wwn #8 {0000}{0000} \__fp_sep: + \__fp_pow_B:wwN #7\__fp_sep: #1 #2 0 % fixed_to_float_o:wN } -\cs_new:Npn \__fp_pow_exponent:wnN #1; #2 +\cs_new:Npn \__fp_pow_exponent:wnN #1\__fp_sep: #2 { \if_int_compare:w #2 > \c_zero_int \exp_after:wN \__fp_pow_exponent:Nwnnnnnw % n\ln(10) - (-\ln(x)) @@ -19789,9 +20010,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_pow_exponent:Nwnnnnnw % -(|n|\ln(10) + (-\ln(x))) \exp_after:wN - \fi: - #2; #1; + #2\__fp_sep: #1\__fp_sep: } -\cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8; +\cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2\__fp_sep: #3#4#5#6#7#8\__fp_sep: { %^^A todo: use that in ln. \exp_after:wN \__fp_fixed_mul_after:wwn \int_value:w \__fp_int_eval:w \c__fp_leading_shift_int @@ -19810,9 +20031,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_pack:NNNNNw \int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int #1 #2*8401 - #1 #7 - #1 ( #2*7991 - #8 ) / 1 0000 ; ; + #1 ( #2*7991 - #8 ) / 1 0000 \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6; #7; +\cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6\__fp_sep: #7\__fp_sep: { \if_int_compare:w #7 < \c_zero_int \exp_after:wN \__fp_pow_C_neg:w \int_value:w - @@ -19823,23 +20044,23 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_pow_C_overflow:w \int_value:w \fi: \fi: - #7 \exp_after:wN ; + #7 \exp_after:wN \__fp_sep: \int_value:w \__fp_int_eval:w 10 0000 + #1 \__fp_int_eval_end: - #2#3#4#5#6 0000 0000 0000 0000 0000 0000 ; %^^A todo: how many 0? + #2#3#4#5#6 0000 0000 0000 0000 0000 0000 \__fp_sep: %^^A todo: how many 0? } -\cs_new:Npn \__fp_pow_C_overflow:w #1; #2; #3 +\cs_new:Npn \__fp_pow_C_overflow:w #1\__fp_sep: #2\__fp_sep: #3 { + 2 * \c__fp_max_exponent_int \exp_after:wN \__fp_fixed_continue:wn \c__fp_one_fixed_tl } -\cs_new:Npn \__fp_pow_C_neg:w #1 ; 1 +\cs_new:Npn \__fp_pow_C_neg:w #1 \__fp_sep: 1 { \exp_after:wN \exp_after:wN \exp_after:wN \__fp_pow_C_pack:w \prg_replicate:nn {#1} {0} } -\cs_new:Npn \__fp_pow_C_pos:w #1; 1 - { \__fp_pow_C_pos_loop:wN #1; } -\cs_new:Npn \__fp_pow_C_pos_loop:wN #1; #2 +\cs_new:Npn \__fp_pow_C_pos:w #1\__fp_sep: 1 + { \__fp_pow_C_pos_loop:wN #1\__fp_sep: } +\cs_new:Npn \__fp_pow_C_pos_loop:wN #1\__fp_sep: #2 { \if_meaning:w 0 #1 \exp_after:wN \__fp_pow_C_pack:w @@ -19850,7 +20071,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \exp_after:wN \__fp_pow_C_overflow:w \int_value:w \fi: - \__fp_int_eval:w #1 - 1 \exp_after:wN ; + \__fp_int_eval:w #1 - 1 \exp_after:wN \__fp_sep: \fi: } \cs_new:Npn \__fp_pow_C_pack:w @@ -19859,20 +20080,21 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN 5 \c__fp_one_fixed_tl } -\cs_new:Npn \__fp_pow_neg:www \s__fp \__fp_chk:w #1#2; #3; #4; +\cs_new:Npn \__fp_pow_neg:www + \s__fp \__fp_chk:w #1#2\__fp_sep: #3\__fp_sep: #4\__fp_sep: { - \if_case:w \__fp_pow_neg_case:w #4 ; + \if_case:w \__fp_pow_neg_case:w #4 \__fp_sep: \exp_after:wN \__fp_pow_neg_aux:wNN \or: \if_int_compare:w \__fp_int_eval:w #1 / 2 = \c_one_int - \__fp_invalid_operation_o:Nww ^ #3; #4; + \__fp_invalid_operation_o:Nww ^ #3\__fp_sep: #4\__fp_sep: \exp:w \exp_end_continue_f:w \exp_after:wN \exp_after:wN \exp_after:wN \__fp_use_none_until_s:w \fi: \fi: \__fp_exp_after_o:w - \s__fp \__fp_chk:w #1#2; + \s__fp \__fp_chk:w #1#2\__fp_sep: } \cs_new:Npn \__fp_pow_neg_aux:wNN #1 \s__fp \__fp_chk:w #2#3 { @@ -19882,7 +20104,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN #2 \int_value:w \__fp_int_eval:w 2 - #3 \__fp_int_eval_end: } -\cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3; +\cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3\__fp_sep: { \if_case:w #1 \exp_stop_f: -1 @@ -19902,7 +20124,7 @@ Type H <return> for immediate help}\def~{\errmessage{% {#2} {#3} {#4} {#5} \fi: } -\cs_new:Npn \__fp_pow_neg_case_aux:Nnnw #1#2#3#4 ; +\cs_new:Npn \__fp_pow_neg_case_aux:Nnnw #1#2#3#4 \__fp_sep: { \if_meaning:w 0 #1 \if_int_odd:w #3 \exp_stop_f: @@ -19915,7 +20137,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: } \int_const:Nn \c__fp_fact_max_arg_int { 3248 } -\cs_new:Npn \__fp_fact_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_fact_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_return_o:Nw \c_one_fp @@ -19931,13 +20153,13 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_case_use:nw { \__fp_invalid_operation_o:fw { fact } } \fi: \__fp_fact_pos_o:w - \s__fp \__fp_chk:w #2 #3 #4 ; + \s__fp \__fp_chk:w #2 #3 #4 \__fp_sep: } -\cs_new:Npn \__fp_fact_pos_o:w #1; +\cs_new:Npn \__fp_fact_pos_o:w #1\__fp_sep: { - \__fp_small_int:wTF #1; + \__fp_small_int:wTF #1\__fp_sep: { \__fp_fact_int_o:n } - { \__fp_invalid_operation_o:fw { fact } #1; } + { \__fp_invalid_operation_o:fw { fact } #1\__fp_sep: } } \cs_new:Npn \__fp_fact_int_o:n #1 { @@ -19951,9 +20173,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_sanitize:Nw \exp_after:wN 0 \int_value:w \__fp_int_eval:w - \__fp_fact_loop_o:w #1 . 4 , { 1 } { } { } { } { } { } ; + \__fp_fact_loop_o:w #1 . 4 , { 1 } { } { } { } { } { } \__fp_sep: } -\cs_new:Npn \__fp_fact_loop_o:w #1 . #2 ; +\cs_new:Npn \__fp_fact_loop_o:w #1 . #2 \__fp_sep: { \if_int_compare:w #1 < 12 \exp_stop_f: \__fp_fact_small_o:w #1 @@ -19961,14 +20183,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_ep_mul:wwwwn \exp_after:wN 4 \exp_after:wN , \exp_after:wN { \int_value:w \__fp_int_eval:w #1 * (#1 - 1) } - { } { } { } { } { } ; - #2 ; + { } { } { } { } { } \__fp_sep: + #2 \__fp_sep: { \exp_after:wN \__fp_fact_loop_o:w \int_value:w \__fp_int_eval:w #1 - 2 . } } -\cs_new:Npn \__fp_fact_small_o:w #1 \fi: #2 ; #3 ; #4 +\cs_new:Npn \__fp_fact_small_o:w #1 \fi: #2 \__fp_sep: #3 \__fp_sep: #4 { \fi: \exp_after:wN \__fp_ep_mul:wwwwn @@ -19980,8 +20202,8 @@ Type H <return> for immediate help}\def~{\errmessage{% 1 \or: 1 \or: 2 \or: 6 \or: 24 \or: 120 \or: 720 \or: 5040 \or: 40320 \or: 362880 \or: 3628800 \or: 39916800 \fi: - } { } { } { } { } { } ; - #3 ; + } { } { } { } { } { } \__fp_sep: + #3 \__fp_sep: \__fp_ep_to_float_o:wwN 0 } %% File: l3fp-trig.dtx @@ -20012,7 +20234,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_parse_function:NNN \__fp_atan_o:Nw \use_i:nn } \cs_new:Npn \__fp_parse_word_atand:N { \__fp_parse_function:NNN \__fp_atan_o:Nw \use_ii:nn } -\cs_new:Npn \__fp_sin_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_sin_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_return_same_o:w @@ -20025,9 +20247,9 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_invalid_operation_o:fw { #1 { sin } { sind } } } \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3 #4; + \s__fp \__fp_chk:w #2 #3 #4\__fp_sep: } -\cs_new:Npn \__fp_cos_o:w #1 \s__fp \__fp_chk:w #2#3; @ +\cs_new:Npn \__fp_cos_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_return_o:Nw \c_one_fp @@ -20040,9 +20262,9 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_invalid_operation_o:fw { #1 { cos } { cosd } } } \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3; + \s__fp \__fp_chk:w #2 #3\__fp_sep: } -\cs_new:Npn \__fp_csc_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_csc_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_cot_zero_o:Nfw #3 { #1 { csc } { cscd } } @@ -20055,9 +20277,9 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_invalid_operation_o:fw { #1 { csc } { cscd } } } \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3 #4; + \s__fp \__fp_chk:w #2 #3 #4\__fp_sep: } -\cs_new:Npn \__fp_sec_o:w #1 \s__fp \__fp_chk:w #2#3; @ +\cs_new:Npn \__fp_sec_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_return_o:Nw \c_one_fp @@ -20070,9 +20292,9 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_invalid_operation_o:fw { #1 { sec } { secd } } } \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3; + \s__fp \__fp_chk:w #2 #3\__fp_sep: } -\cs_new:Npn \__fp_tan_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_tan_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_return_same_o:w @@ -20085,9 +20307,9 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_invalid_operation_o:fw { #1 { tan } { tand } } } \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3 #4; + \s__fp \__fp_chk:w #2 #3 #4\__fp_sep: } -\cs_new:Npn \__fp_cot_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_cot_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_cot_zero_o:Nfw #3 { #1 { cot } { cotd } } @@ -20100,7 +20322,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_invalid_operation_o:fw { #1 { cot } { cotd } } } \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3 #4; + \s__fp \__fp_chk:w #2 #3 #4\__fp_sep: } \cs_new:Npn \__fp_cot_zero_o:Nfw #1#2#3 \fi: { @@ -20110,7 +20332,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_args:NNf \__fp_division_by_zero_o:Nnw \c_minus_inf_fp } {#2} } -\cs_new:Npn \__fp_trig:NNNNNwn #1#2#3#4#5 \s__fp \__fp_chk:w 1#6#7#8; +\cs_new:Npn \__fp_trig:NNNNNwn #1#2#3#4#5 \s__fp \__fp_chk:w 1#6#7#8\__fp_sep: { \exp_after:wN #2 \exp_after:wN #3 @@ -20122,44 +20344,44 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: #1 \__fp_trig_small:ww \__fp_trigd_small:ww \fi: - #7,#8{0000}{0000}; + #7,#8{0000}{0000}\__fp_sep: } -\cs_new:Npn \__fp_trig_small:ww #1,#2; - { \__fp_ep_to_fixed:wwn #1,#2; . #1,#2; } -\cs_new:Npn \__fp_trigd_small:ww #1,#2; +\cs_new:Npn \__fp_trig_small:ww #1,#2\__fp_sep: + { \__fp_ep_to_fixed:wwn #1,#2\__fp_sep: . #1,#2\__fp_sep: } +\cs_new:Npn \__fp_trigd_small:ww #1,#2\__fp_sep: { \__fp_ep_mul_raw:wwwwN - -1,{1745}{3292}{5199}{4329}{5769}{2369}; #1,#2; + -1,{1745}{3292}{5199}{4329}{5769}{2369}\__fp_sep: #1,#2\__fp_sep: \__fp_trig_small:ww } -\cs_new:Npn \__fp_trigd_large:ww #1, #2#3#4#5#6#7; +\cs_new:Npn \__fp_trigd_large:ww #1, #2#3#4#5#6#7\__fp_sep: { \exp_after:wN \__fp_pack_eight:wNNNNNNNN \exp_after:wN \__fp_pack_eight:wNNNNNNNN \exp_after:wN \__fp_pack_twice_four:wNNNNNNNN \exp_after:wN \__fp_pack_twice_four:wNNNNNNNN \exp_after:wN \__fp_trigd_large_auxi:nnnnwNNNN - \exp_after:wN ; + \exp_after:wN \__fp_sep: \exp:w \exp_end_continue_f:w \prg_replicate:nn { \int_max:nn { 22 - #1 } { 0 } } { 0 } #2#3#4#5#6#7 0000 0000 0000 ! } -\cs_new:Npn \__fp_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5; #6#7#8#9 +\cs_new:Npn \__fp_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5\__fp_sep: #6#7#8#9 { \exp_after:wN \__fp_trigd_large_auxii:wNw \int_value:w \__fp_int_eval:w #1 + #2 - (#1 + #2 - 4) / 9 * 9 \__fp_int_eval_end: - #3; - #4; #5{#6#7#8#9}; + #3\__fp_sep: + #4\__fp_sep: #5{#6#7#8#9}\__fp_sep: } -\cs_new:Npn \__fp_trigd_large_auxii:wNw #1; #2#3; +\cs_new:Npn \__fp_trigd_large_auxii:wNw #1\__fp_sep: #2#3\__fp_sep: { + (#1#2 - 4) / 9 * 2 \exp_after:wN \__fp_trigd_large_auxiii:www \int_value:w \__fp_int_eval:w #1#2 - - (#1#2 - 4) / 9 * 9 \__fp_int_eval_end: #3 ; + - (#1#2 - 4) / 9 * 9 \__fp_int_eval_end: #3 \__fp_sep: } -\cs_new:Npn \__fp_trigd_large_auxiii:www #1; #2; #3! +\cs_new:Npn \__fp_trigd_large_auxiii:www #1\__fp_sep: #2\__fp_sep: #3! { \if_int_compare:w #1 < 4500 \exp_stop_f: \exp_after:wN \__fp_use_i_until_s:nw @@ -20167,8 +20389,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: + 1 \fi: - \__fp_fixed_sub:wwn {9000}{0000}{0000}{0000}{0000}{0000}; - {#1}#2{0000}{0000}; + \__fp_fixed_sub:wwn {9000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: + {#1}#2{0000}{0000}\__fp_sep: { \__fp_trigd_small:ww 2, } } \intarray_const_from_clist:Nn \c__fp_trig_intarray @@ -20385,12 +20607,12 @@ Type H <return> for immediate help}\def~{\errmessage{% 159592267, 181172796, 144388537, 196763139, 127431422, 179531145, 100064922, 112650013, 132686230, 121550837, } -\cs_new:Npn \__fp_trig_large:ww #1, #2#3#4#5#6; +\cs_new:Npn \__fp_trig_large:ww #1, #2#3#4#5#6\__fp_sep: { \exp_after:wN \__fp_trig_large_auxi:w \int_value:w \__fp_int_eval:w (#1 - 4) / 8 \exp_after:wN , - \int_value:w #1 , ; - {#2}{#3}{#4}{#5} ; + \int_value:w #1 , \__fp_sep: + {#2}{#3}{#4}{#5} \__fp_sep: } \cs_new:Npn \__fp_trig_large_auxi:w #1, #2, { @@ -20435,10 +20657,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN - \__fp_trig_large_auxv:www ; + \__fp_trig_large_auxv:www \__fp_sep: } \cs_new:Npn \__fp_trig_large_auxiii:w 1 { \exp_stop_f: } -\cs_new:Npn \__fp_trig_large_auxv:www #1; #2; #3; +\cs_new:Npn \__fp_trig_large_auxv:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: { \exp_after:wN \__fp_use_i_until_s:nw \exp_after:wN \__fp_trig_large_auxvii:w @@ -20447,24 +20669,24 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_trig_large_auxvi:wnnnnnnnn } + \c__fp_trailing_shift_int - \c__fp_middle_shift_int \__fp_use_i_until_s:nw - ; #3 #1 ; ; + \__fp_sep: #3 #1 \__fp_sep: \__fp_sep: } -\cs_new:Npn \__fp_trig_large_auxvi:wnnnnnnnn #1; #2#3#4#5#6#7#8#9 +\cs_new:Npn \__fp_trig_large_auxvi:wnnnnnnnn #1\__fp_sep: #2#3#4#5#6#7#8#9 { \exp_after:wN \__fp_trig_large_pack:NNNNNw \int_value:w \__fp_int_eval:w \c__fp_middle_shift_int + #2*#9 + #3*#8 + #4*#7 + #5*#6 - #1; {#2}{#3}{#4}{#5} {#7}{#8}{#9} + #1\__fp_sep: {#2}{#3}{#4}{#5} {#7}{#8}{#9} } -\cs_new:Npn \__fp_trig_large_pack:NNNNNw #1#2#3#4#5#6; - { + #1#2#3#4#5 ; #6 } +\cs_new:Npn \__fp_trig_large_pack:NNNNNw #1#2#3#4#5#6\__fp_sep: + { + #1#2#3#4#5 \__fp_sep: #6 } \cs_new:Npn \__fp_trig_large_auxvii:w #1#2#3 { \exp_after:wN \__fp_trig_large_auxviii:ww - \int_value:w \__fp_int_eval:w (#1#2#3 - 62) / 125 ; + \int_value:w \__fp_int_eval:w (#1#2#3 - 62) / 125 \__fp_sep: #1#2#3 } -\cs_new:Npn \__fp_trig_large_auxviii:ww #1; +\cs_new:Npn \__fp_trig_large_auxviii:ww #1\__fp_sep: { + #1 \if_int_odd:w #1 \exp_stop_f: @@ -20483,25 +20705,25 @@ Type H <return> for immediate help}\def~{\errmessage{% \prg_replicate:nn { 13 } { \__fp_trig_large_auxx:wNNNNN } + \c__fp_trailing_shift_int - \c__fp_middle_shift_int - ; + \__fp_sep: } -\cs_new:Npn \__fp_trig_large_auxx:wNNNNN #1; #2 #3#4#5#6 +\cs_new:Npn \__fp_trig_large_auxx:wNNNNN #1\__fp_sep: #2 #3#4#5#6 { \exp_after:wN \__fp_trig_large_pack:NNNNNw \int_value:w \__fp_int_eval:w \c__fp_middle_shift_int #2 8 * #3#4#5#6 - #1; #2 + #1\__fp_sep: #2 } -\cs_new:Npn \__fp_trig_large_auxxi:w #1; +\cs_new:Npn \__fp_trig_large_auxxi:w #1\__fp_sep: { \exp_after:wN \__fp_ep_mul_raw:wwwwN - \int_value:w \__fp_int_eval:w 0 \__fp_ep_to_ep_loop:N #1 ; ; ! - 0,{7853}{9816}{3397}{4483}{0961}{5661}; + \int_value:w \__fp_int_eval:w 0 \__fp_ep_to_ep_loop:N #1 \__fp_sep: \__fp_sep: ! + 0,{7853}{9816}{3397}{4483}{0961}{5661}\__fp_sep: \__fp_trig_small:ww } -\cs_new:Npn \__fp_sin_series_o:NNwwww #1#2#3. #4; +\cs_new:Npn \__fp_sin_series_o:NNwwww #1#2#3. #4\__fp_sep: { - \__fp_fixed_mul:wwn #4; #4; + \__fp_fixed_mul:wwn #4\__fp_sep: #4\__fp_sep: { \exp_after:wN \__fp_sin_series_aux_o:NNnwww \exp_after:wN #1 @@ -20514,7 +20736,7 @@ Type H <return> for immediate help}\def~{\errmessage{% {#3} } } -\cs_new:Npn \__fp_sin_series_aux_o:NNnwww #1#2#3 #4; #5,#6; +\cs_new:Npn \__fp_sin_series_aux_o:NNnwww #1#2#3 #4\__fp_sep: #5,#6\__fp_sep: { \if_int_odd:w \__fp_int_eval:w #3 / 2 \__fp_int_eval_end: \exp_after:wN \use_i:nn @@ -20522,29 +20744,46 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \use_ii:nn \fi: { % 1/18! - \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0001}{5619}{2070}; - #4;{0000}{0000}{0000}{0477}{9477}{3324}; - \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{0011}{4707}{4559}{7730}; - \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{2087}{6756}{9878}{6810}; - \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0027}{5573}{1922}{3985}{8907}; - \__fp_fixed_mul_sub_back:wwwn #4;{0000}{2480}{1587}{3015}{8730}{1587}; - \__fp_fixed_mul_sub_back:wwwn #4;{0013}{8888}{8888}{8888}{8888}{8889}; - \__fp_fixed_mul_sub_back:wwwn #4;{0416}{6666}{6666}{6666}{6666}{6667}; - \__fp_fixed_mul_sub_back:wwwn #4;{5000}{0000}{0000}{0000}{0000}{0000}; - \__fp_fixed_mul_sub_back:wwwn#4;{10000}{0000}{0000}{0000}{0000}{0000}; + \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0001}{5619}{2070}\__fp_sep: + #4\__fp_sep: + {0000}{0000}{0000}{0477}{9477}{3324}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0000}{0000}{0011}{4707}{4559}{7730}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0000}{0000}{2087}{6756}{9878}{6810}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0000}{0027}{5573}{1922}{3985}{8907}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0000}{2480}{1587}{3015}{8730}{1587}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0013}{8888}{8888}{8888}{8888}{8889}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0416}{6666}{6666}{6666}{6666}{6667}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {5000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn#4\__fp_sep: + {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: { \__fp_fixed_continue:wn 0, } } { % 1/17! - \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0028}{1145}{7254}; - #4;{0000}{0000}{0000}{7647}{1637}{3182}; - \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{0160}{5904}{3836}{8216}; - \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0002}{5052}{1083}{8544}{1719}; - \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0275}{5731}{9223}{9858}{9065}; - \__fp_fixed_mul_sub_back:wwwn #4;{0001}{9841}{2698}{4126}{9841}{2698}; - \__fp_fixed_mul_sub_back:wwwn #4;{0083}{3333}{3333}{3333}{3333}{3333}; - \__fp_fixed_mul_sub_back:wwwn #4;{1666}{6666}{6666}{6666}{6666}{6667}; - \__fp_fixed_mul_sub_back:wwwn#4;{10000}{0000}{0000}{0000}{0000}{0000}; - { \__fp_ep_mul:wwwwn 0, } #5,#6; + \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0028}{1145}{7254}\__fp_sep: + #4\__fp_sep: + {0000}{0000}{0000}{7647}{1637}{3182}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0000}{0000}{0160}{5904}{3836}{8216}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0000}{0002}{5052}{1083}{8544}{1719}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0000}{0275}{5731}{9223}{9858}{9065}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0001}{9841}{2698}{4126}{9841}{2698}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {0083}{3333}{3333}{3333}{3333}{3333}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep: + {1666}{6666}{6666}{6666}{6666}{6667}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn#4\__fp_sep: + {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: + { \__fp_ep_mul:wwwwn 0, } #5,#6\__fp_sep: } { \exp_after:wN \__fp_sanitize:Nw @@ -20553,9 +20792,9 @@ Type H <return> for immediate help}\def~{\errmessage{% } #2 } -\cs_new:Npn \__fp_tan_series_o:NNwwww #1#2#3. #4; +\cs_new:Npn \__fp_tan_series_o:NNwwww #1#2#3. #4\__fp_sep: { - \__fp_fixed_mul:wwn #4; #4; + \__fp_fixed_mul:wwn #4\__fp_sep: #4\__fp_sep: { \exp_after:wN \__fp_tan_series_aux_o:Nnwww \int_value:w @@ -20566,22 +20805,32 @@ Type H <return> for immediate help}\def~{\errmessage{% {#3} } } -\cs_new:Npn \__fp_tan_series_aux_o:Nnwww #1 #2 #3; #4,#5; - { - \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{1527}{3493}{0856}{7059}; - #3; {0000}{0159}{6080}{0274}{5257}{6472}; - \__fp_fixed_mul_sub_back:wwwn #3; {0002}{4571}{2320}{0157}{2558}{8481}; - \__fp_fixed_mul_sub_back:wwwn #3; {0115}{5830}{7533}{5397}{3168}{2147}; - \__fp_fixed_mul_sub_back:wwwn #3; {1929}{8245}{6140}{3508}{7719}{2982}; - \__fp_fixed_mul_sub_back:wwwn #3;{10000}{0000}{0000}{0000}{0000}{0000}; - { \__fp_ep_mul:wwwwn 0, } #4,#5; +\cs_new:Npn \__fp_tan_series_aux_o:Nnwww #1 #2 #3\__fp_sep: #4,#5\__fp_sep: + { + \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{1527}{3493}{0856}{7059}\__fp_sep: + #3\__fp_sep: + {0000}{0159}{6080}{0274}{5257}{6472}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep: + {0002}{4571}{2320}{0157}{2558}{8481}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep: + {0115}{5830}{7533}{5397}{3168}{2147}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep: + {1929}{8245}{6140}{3508}{7719}{2982}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep: + {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: + { \__fp_ep_mul:wwwwn 0, } #4,#5\__fp_sep: { - \__fp_fixed_mul_sub_back:wwwn {0000}{0007}{0258}{0681}{9408}{4706}; - #3;{0000}{2343}{7175}{1399}{6151}{7670}; - \__fp_fixed_mul_sub_back:wwwn #3;{0019}{2638}{4588}{9232}{8861}{3691}; - \__fp_fixed_mul_sub_back:wwwn #3;{0536}{6357}{0691}{4344}{6852}{4252}; - \__fp_fixed_mul_sub_back:wwwn #3;{5263}{1578}{9473}{6842}{1052}{6315}; - \__fp_fixed_mul_sub_back:wwwn#3;{10000}{0000}{0000}{0000}{0000}{0000}; + \__fp_fixed_mul_sub_back:wwwn {0000}{0007}{0258}{0681}{9408}{4706}\__fp_sep: + #3\__fp_sep: + {0000}{2343}{7175}{1399}{6151}{7670}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep: + {0019}{2638}{4588}{9232}{8861}{3691}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep: + {0536}{6357}{0691}{4344}{6852}{4252}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep: + {5263}{1578}{9473}{6842}{1052}{6315}\__fp_sep: + \__fp_fixed_mul_sub_back:wwwn#3\__fp_sep: + {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: { \reverse_if:N \if_int_odd:w \__fp_int_eval:w (#2 - 1) / 2 \__fp_int_eval_end: @@ -20611,7 +20860,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npe \__fp_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ } \cs_new:Npn \__fp_atanii_o:Nww - #1 \s__fp \__fp_chk:w #2#3#4; \s__fp \__fp_chk:w #5 #6 @ + #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: \s__fp \__fp_chk:w #5 #6 @ { \if_meaning:w 3 #2 \__fp_case_return_i_o:ww \fi: \if_meaning:w 3 #5 \__fp_case_return_ii_o:ww \fi: @@ -20627,29 +20876,29 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 0 } \fi: \__fp_atan_normal_o:NNnwNnw #1 - \s__fp \__fp_chk:w #2#3#4; + \s__fp \__fp_chk:w #2#3#4\__fp_sep: \s__fp \__fp_chk:w #5 #6 } -\cs_new:Npn \__fp_acotii_o:Nww #1#2; #3; - { \__fp_atanii_o:Nww #1#3; #2; } -\cs_new:Npn \__fp_atan_inf_o:NNNw #1#2#3 \s__fp \__fp_chk:w #4#5#6; +\cs_new:Npn \__fp_acotii_o:Nww #1#2\__fp_sep: #3\__fp_sep: + { \__fp_atanii_o:Nww #1#3\__fp_sep: #2\__fp_sep: } +\cs_new:Npn \__fp_atan_inf_o:NNNw #1#2#3 \s__fp \__fp_chk:w #4#5#6\__fp_sep: { \exp_after:wN \__fp_atan_combine_o:NwwwwwN \exp_after:wN #2 \int_value:w \__fp_int_eval:w - \if_meaning:w 2 #5 7 - \fi: #3 \exp_after:wN ; + \if_meaning:w 2 #5 7 - \fi: #3 \exp_after:wN \__fp_sep: \c__fp_one_fixed_tl - {0000}{0000}{0000}{0000}{0000}{0000}; - 0,{0000}{0000}{0000}{0000}{0000}{0000}; #1 + {0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: + 0,{0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1 } \cs_new_protected:Npn \__fp_atan_normal_o:NNnwNnw - #1 \s__fp \__fp_chk:w 1#2#3#4; \s__fp \__fp_chk:w 1#5#6#7; + #1 \s__fp \__fp_chk:w 1#2#3#4\__fp_sep: \s__fp \__fp_chk:w 1#5#6#7\__fp_sep: { \__fp_atan_test_o:NwwNwwN - #2 #3, #4{0000}{0000}; - #5 #6, #7{0000}{0000}; #1 + #2 #3, #4{0000}{0000}\__fp_sep: + #5 #6, #7{0000}{0000}\__fp_sep: #1 } -\cs_new:Npn \__fp_atan_test_o:NwwNwwN #1#2,#3; #4#5,#6; +\cs_new:Npn \__fp_atan_test_o:NwwNwwN #1#2,#3\__fp_sep: #4#5,#6\__fp_sep: { \exp_after:wN \__fp_atan_combine_o:NwwwwwN \exp_after:wN #1 @@ -20658,13 +20907,13 @@ Type H <return> for immediate help}\def~{\errmessage{% 7 - \__fp_int_eval:w \fi: \if_int_compare:w - \__fp_ep_compare:wwww #2,#3; #5,#6; > \c_zero_int + \__fp_ep_compare:wwww #2,#3\__fp_sep: #5,#6\__fp_sep: > \c_zero_int 3 - \exp_after:wN \__fp_reverse_args:Nww \fi: - \__fp_atan_div:wnwwnw #2,#3; #5,#6; + \__fp_atan_div:wnwwnw #2,#3\__fp_sep: #5,#6\__fp_sep: } -\cs_new:Npn \__fp_atan_div:wnwwnw #1,#2#3; #4,#5#6; +\cs_new:Npn \__fp_atan_div:wnwwnw #1,#2#3\__fp_sep: #4,#5#6\__fp_sep: { \if_int_compare:w \__fp_int_eval:w 41421 * #5 < #2 000 @@ -20674,49 +20923,50 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_atan_near:wwwn \fi: 0 - \__fp_ep_div:wwwwn #1,{#2}#3; #4,{#5}#6; + \__fp_ep_div:wwwwn #1,{#2}#3\__fp_sep: #4,{#5}#6\__fp_sep: \__fp_atan_auxi:ww } \cs_new:Npn \__fp_atan_near:wwwn - 0 \__fp_ep_div:wwwwn #1,#2; #3, + 0 \__fp_ep_div:wwwwn #1,#2\__fp_sep: #3, { 1 - \__fp_ep_to_fixed:wwn #1 - #3, #2; + \__fp_ep_to_fixed:wwn #1 - #3, #2\__fp_sep: \__fp_atan_near_aux:wwn } -\cs_new:Npn \__fp_atan_near_aux:wwn #1; #2; +\cs_new:Npn \__fp_atan_near_aux:wwn #1\__fp_sep: #2\__fp_sep: { - \__fp_fixed_add:wwn #1; #2; - { \__fp_fixed_sub:wwn #2; #1; { \__fp_ep_div:wwwwn 0, } 0, } + \__fp_fixed_add:wwn #1\__fp_sep: #2\__fp_sep: + { \__fp_fixed_sub:wwn #2\__fp_sep: #1\__fp_sep: { \__fp_ep_div:wwwwn 0, } 0, } } -\cs_new:Npn \__fp_atan_auxi:ww #1,#2; - { \__fp_ep_to_fixed:wwn #1,#2; \__fp_atan_auxii:w #1,#2; } -\cs_new:Npn \__fp_atan_auxii:w #1; +\cs_new:Npn \__fp_atan_auxi:ww #1,#2\__fp_sep: + { \__fp_ep_to_fixed:wwn #1,#2\__fp_sep: \__fp_atan_auxii:w #1,#2\__fp_sep: } +\cs_new:Npn \__fp_atan_auxii:w #1\__fp_sep: { - \__fp_fixed_mul:wwn #1; #1; + \__fp_fixed_mul:wwn #1\__fp_sep: #1\__fp_sep: { - \__fp_atan_Taylor_loop:www 39 ; - {0000}{0000}{0000}{0000}{0000}{0000} ; + \__fp_atan_Taylor_loop:www 39 \__fp_sep: + {0000}{0000}{0000}{0000}{0000}{0000} \__fp_sep: } - ! #1; + ! #1\__fp_sep: } -\cs_new:Npn \__fp_atan_Taylor_loop:www #1; #2; #3; +\cs_new:Npn \__fp_atan_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: { \if_int_compare:w #1 = - \c_one_int \__fp_atan_Taylor_break:w \fi: - \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1; - \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2; #3; + \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1\__fp_sep: + \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep: #3\__fp_sep: { \exp_after:wN \__fp_atan_Taylor_loop:www - \int_value:w \__fp_int_eval:w #1 - 2 ; + \int_value:w \__fp_int_eval:w #1 - 2 \__fp_sep: } - #3; + #3\__fp_sep: } \cs_new:Npn \__fp_atan_Taylor_break:w - \fi: #1 \__fp_fixed_mul_sub_back:wwwn #2; #3 ! - { \fi: ; #2 ; } -\cs_new:Npn \__fp_atan_combine_o:NwwwwwN #1 #2; #3; #4; #5,#6; #7 + \fi: #1 \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep: #3 ! + { \fi: \__fp_sep: #2 \__fp_sep: } +\cs_new:Npn \__fp_atan_combine_o:NwwwwwN + #1 #2\__fp_sep: #3\__fp_sep: #4\__fp_sep: #5,#6\__fp_sep: #7 { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 @@ -20726,22 +20976,22 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \exp_after:wN \use_ii:nn \fi: - { #5 \__fp_fixed_mul:wwn #3; #6; } + { #5 \__fp_fixed_mul:wwn #3\__fp_sep: #6\__fp_sep: } { - \__fp_fixed_mul:wwn #3; #4; + \__fp_fixed_mul:wwn #3\__fp_sep: #4\__fp_sep: { \exp_after:wN \__fp_atan_combine_aux:ww - \int_value:w \__fp_int_eval:w #2 / 2 ; #2; + \int_value:w \__fp_int_eval:w #2 / 2 \__fp_sep: #2\__fp_sep: } } { #7 \__fp_fixed_to_float_o:wN \__fp_fixed_to_float_rad_o:wN } #1 } -\cs_new:Npn \__fp_atan_combine_aux:ww #1; #2; +\cs_new:Npn \__fp_atan_combine_aux:ww #1\__fp_sep: #2\__fp_sep: { \__fp_fixed_mul_short:wwn - {7853}{9816}{3397}{4483}{0961}{5661}; - {#1}{0000}{0000}; + {7853}{9816}{3397}{4483}{0961}{5661}\__fp_sep: + {#1}{0000}{0000}\__fp_sep: { \if_int_odd:w #2 \exp_stop_f: \exp_after:wN \__fp_fixed_sub:wwn @@ -20750,7 +21000,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: } } -\cs_new:Npn \__fp_asin_o:w #1 \s__fp \__fp_chk:w #2#3; @ +\cs_new:Npn \__fp_asin_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_return_same_o:w @@ -20763,9 +21013,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3; + \s__fp \__fp_chk:w #2 #3\__fp_sep: } -\cs_new:Npn \__fp_acos_o:w #1 \s__fp \__fp_chk:w #2#3; @ +\cs_new:Npn \__fp_acos_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 } @@ -20781,10 +21031,10 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3; + \s__fp \__fp_chk:w #2 #3\__fp_sep: } \cs_new:Npn \__fp_asin_normal_o:NfwNnnnnw - #1#2#3 \s__fp \__fp_chk:w 1#4#5#6#7#8#9; + #1#2#3 \s__fp \__fp_chk:w 1#4#5#6#7#8#9\__fp_sep: { \if_int_compare:w #5 < \c_one_int \exp_after:wN \__fp_use_none_until_s:w @@ -20794,30 +21044,30 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_use_i:ww \__fp_invalid_operation_o:fw {#2} - \s__fp \__fp_chk:w 1#4{#5}{#6}{#7}{#8}{#9}; + \s__fp \__fp_chk:w 1#4{#5}{#6}{#7}{#8}{#9}\__fp_sep: \__fp_asin_auxi_o:NnNww - #1 {#3} #4 #5,{#6}{#7}{#8}{#9}{0000}{0000}; + #1 {#3} #4 #5,{#6}{#7}{#8}{#9}{0000}{0000}\__fp_sep: } -\cs_new:Npn \__fp_asin_auxi_o:NnNww #1#2#3#4,#5; +\cs_new:Npn \__fp_asin_auxi_o:NnNww #1#2#3#4,#5\__fp_sep: { - \__fp_ep_to_fixed:wwn #4,#5; + \__fp_ep_to_fixed:wwn #4,#5\__fp_sep: \__fp_asin_isqrt:wn - \__fp_ep_mul:wwwwn #4,#5; + \__fp_ep_mul:wwwwn #4,#5\__fp_sep: \__fp_ep_to_ep:wwN \__fp_fixed_continue:wn { #2 \__fp_atan_test_o:NwwNwwN #3 } - 0 1,{1000}{0000}{0000}{0000}{0000}{0000}; #1 + 0 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1 } -\cs_new:Npn \__fp_asin_isqrt:wn #1; +\cs_new:Npn \__fp_asin_isqrt:wn #1\__fp_sep: { - \exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl #1; + \exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl #1\__fp_sep: { - \__fp_fixed_add_one:wN #1; + \__fp_fixed_add_one:wN #1\__fp_sep: \__fp_fixed_continue:wn { \__fp_ep_mul:wwwwn 0, } 0, } \__fp_ep_isqrt:wwn } -\cs_new:Npn \__fp_acsc_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ +\cs_new:Npn \__fp_acsc_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @ { \if_case:w \if_meaning:w 2 #2 #3 \fi: #2 \exp_stop_f: \__fp_case_use:nw @@ -20828,9 +21078,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \__fp_case_return_same_o:w \else: \__fp_case_return_o:Nw \c_minus_zero_fp \fi: - \s__fp \__fp_chk:w #2 #3 #4; + \s__fp \__fp_chk:w #2 #3 #4\__fp_sep: } -\cs_new:Npn \__fp_asec_o:w #1 \s__fp \__fp_chk:w #2#3; @ +\cs_new:Npn \__fp_asec_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @ { \if_case:w #2 \exp_stop_f: \__fp_case_use:nw @@ -20844,24 +21094,24 @@ Type H <return> for immediate help}\def~{\errmessage{% \or: \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 } \else: \__fp_case_return_same_o:w \fi: - \s__fp \__fp_chk:w #2 #3; + \s__fp \__fp_chk:w #2 #3\__fp_sep: } -\cs_new:Npn \__fp_acsc_normal_o:NfwNnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6; +\cs_new:Npn \__fp_acsc_normal_o:NfwNnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6\__fp_sep: { \int_compare:nNnTF {#5} < 1 { \__fp_invalid_operation_o:fw {#2} - \s__fp \__fp_chk:w 1#4{#5}#6; + \s__fp \__fp_chk:w 1#4{#5}#6\__fp_sep: } { \__fp_ep_div:wwwwn - 1,{1000}{0000}{0000}{0000}{0000}{0000}; - #5,#6{0000}{0000}; + 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: + #5,#6{0000}{0000}\__fp_sep: { \__fp_asin_auxi_o:NnNww #1 {#3} #4 } } } %% File: l3fp-convert.dtx -\cs_new:Npn \__fp_tuple_convert:Nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 ; +\cs_new:Npn \__fp_tuple_convert:Nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep: { \int_case:nnF { \__fp_array_count:n {#2} } { @@ -20870,26 +21120,29 @@ Type H <return> for immediate help}\def~{\errmessage{% } { \__fp_tuple_convert_loop:nNw { } #1 - #2 { ? \__fp_tuple_convert_end:w } ; + #2 { ? \__fp_tuple_convert_end:w } \__fp_sep: @ { \use_none:nn } } } -\cs_new:Npn \__fp_tuple_convert_loop:nNw #1#2#3#4; #5 @ #6 +\cs_new:Npn \__fp_tuple_convert_loop:nNw #1#2#3#4\__fp_sep: #5 @ #6 { \use_none:n #3 - \exp_args:Nf \__fp_tuple_convert_loop:nNw { #2 #3#4 ; } #2 #5 + \exp_args:Nf \__fp_tuple_convert_loop:nNw { #2 #3#4 \__fp_sep: } #2 #5 @ { #6 , ~ #1 } } \cs_new:Npn \__fp_tuple_convert_end:w #1 @ #2 { \exp_after:wN ( \exp:w \exp_end_continue_f:w #2 ) } -\cs_new:Npn \__fp_trim_zeros:w #1 ; +\cs_new:Npn \__fp_trim_zeros:w #1 \__fp_sep: { - \__fp_trim_zeros_loop:w #1 - ; \__fp_trim_zeros_loop:w 0; \__fp_trim_zeros_dot:w .; \s__fp_stop + \__fp_trim_zeros_loop:w #1 \__fp_sep: + \__fp_trim_zeros_loop:w 0\__fp_sep: + \__fp_trim_zeros_dot:w .\__fp_sep: + \s__fp_stop } -\cs_new:Npn \__fp_trim_zeros_loop:w #1 0; #2 { #2 #1 ; #2 } -\cs_new:Npn \__fp_trim_zeros_dot:w #1 .; { \__fp_trim_zeros_end:w #1 ; } -\cs_new:Npn \__fp_trim_zeros_end:w #1 ; #2 \s__fp_stop { #1 } +\cs_new:Npn \__fp_trim_zeros_loop:w #1 0\__fp_sep: #2 { #2 #1 \__fp_sep: #2 } +\cs_new:Npn \__fp_trim_zeros_dot:w #1 .\__fp_sep: + { \__fp_trim_zeros_end:w #1 \__fp_sep: } +\cs_new:Npn \__fp_trim_zeros_end:w #1 \__fp_sep: #2 \s__fp_stop { #1 } \cs_new:Npn \fp_to_scientific:N #1 { \exp_after:wN \__fp_to_scientific_dispatch:w #1 } \cs_generate_variant:Nn \fp_to_scientific:N { c } @@ -20904,9 +21157,9 @@ Type H <return> for immediate help}\def~{\errmessage{% #1 \__fp_to_scientific:w \__fp_to_scientific_recover:w #1 } -\cs_new:Npn \__fp_to_scientific_recover:w #1 #2 ; +\cs_new:Npn \__fp_to_scientific_recover:w #1 #2 \__fp_sep: { - \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { } + \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { } nan } \cs_new:Npn \__fp_tuple_to_scientific:w @@ -20935,14 +21188,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \s__fp \__fp_chk:w #1 #2 } \cs_new:Npn \__fp_to_scientific_normal:wnnnnn - \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; + \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep: { \exp_after:wN \__fp_to_scientific_normal:wNw \exp_after:wN e \int_value:w \__fp_int_eval:w #2 - 1 - ; #3 #4 #5 #6 ; + \__fp_sep: #3 #4 #5 #6 \__fp_sep: } -\cs_new:Npn \__fp_to_scientific_normal:wNw #1 ; #2#3; +\cs_new:Npn \__fp_to_scientific_normal:wNw #1 \__fp_sep: #2#3\__fp_sep: { #2.#3 #1 } \cs_new:Npn \fp_to_decimal:N #1 { \exp_after:wN \__fp_to_decimal_dispatch:w #1 } @@ -20958,9 +21211,9 @@ Type H <return> for immediate help}\def~{\errmessage{% #1 \__fp_to_decimal:w \__fp_to_decimal_recover:w #1 } -\cs_new:Npn \__fp_to_decimal_recover:w #1 #2 ; +\cs_new:Npn \__fp_to_decimal_recover:w #1 #2 \__fp_sep: { - \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { } + \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { } nan } \cs_new:Npn \__fp_tuple_to_decimal:w @@ -20989,7 +21242,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \s__fp \__fp_chk:w #1 #2 } \cs_new:Npn \__fp_to_decimal_normal:wnnnnn - \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; + \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep: { \int_compare:nNnTF {#2} > 0 { @@ -21001,7 +21254,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \exp_after:wN \exp_after:wN \__fp_to_decimal_huge:wnnnn - \prg_replicate:nn { #2 - \c__fp_prec_int } { 0 } ; + \prg_replicate:nn { #2 - \c__fp_prec_int } { 0 } \__fp_sep: } {#3} {#4} {#5} {#6} } @@ -21010,19 +21263,19 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN 0 \exp_after:wN . \exp:w \exp_end_continue_f:w \prg_replicate:nn { - #2 } { 0 } - #3#4#5#6 ; + #3#4#5#6 \__fp_sep: } } -\cs_new:Npn \__fp_to_decimal_large:Nnnw #1#2#3#4; +\cs_new:Npn \__fp_to_decimal_large:Nnnw #1#2#3#4\__fp_sep: { \exp_after:wN \__fp_trim_zeros:w \int_value:w \if_int_compare:w #2 > \c_zero_int #2 \fi: \exp_stop_f: - #3.#4 ; + #3.#4 \__fp_sep: } -\cs_new:Npn \__fp_to_decimal_huge:wnnnn #1; #2#3#4#5 { #2#3#4#5 #1 } +\cs_new:Npn \__fp_to_decimal_huge:wnnnn #1\__fp_sep: #2#3#4#5 { #2#3#4#5 #1 } \cs_new:Npn \fp_to_tl:N #1 { \exp_after:wN \__fp_to_tl_dispatch:w #1 } \cs_generate_variant:Nn \fp_to_tl:N { c } \cs_new:Npn \fp_to_tl:n @@ -21032,9 +21285,9 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new:Npn \__fp_to_tl_dispatch:w #1 { \__fp_change_func_type:NNN #1 \__fp_to_tl:w \__fp_to_tl_recover:w #1 } -\cs_new:Npn \__fp_to_tl_recover:w #1 #2 ; +\cs_new:Npn \__fp_to_tl_recover:w #1 #2 \__fp_sep: { - \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { } + \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { } nan } \cs_new:Npn \__fp_tuple_to_tl:w @@ -21058,15 +21311,15 @@ Type H <return> for immediate help}\def~{\errmessage{% \s__fp \__fp_chk:w 1 0 {#1} } \cs_new:Npn \__fp_to_tl_scientific:wnnnnn - \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; + \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep: { \exp_after:wN \__fp_to_tl_scientific:wNw \exp_after:wN e \int_value:w \__fp_int_eval:w #2 - 1 - ; #3 #4 #5 #6 ; + \__fp_sep: #3 #4 #5 #6 \__fp_sep: } -\cs_new:Npn \__fp_to_tl_scientific:wNw #1 ; #2#3; - { \__fp_trim_zeros:w #2.#3 ; #1 } +\cs_new:Npn \__fp_to_tl_scientific:wNw #1 \__fp_sep: #2#3\__fp_sep: + { \__fp_trim_zeros:w #2.#3 \__fp_sep: #1 } \cs_new:Npn \fp_to_dim:N #1 { \exp_after:wN \__fp_to_dim_dispatch:w #1 } \cs_generate_variant:Nn \fp_to_dim:N { c } @@ -21075,14 +21328,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_to_dim_dispatch:w \exp:w \exp_end_continue_f:w \__fp_parse:n } -\cs_new:Npn \__fp_to_dim_dispatch:w #1#2 ; +\cs_new:Npn \__fp_to_dim_dispatch:w #1#2 \__fp_sep: { \__fp_change_func_type:NNN #1 \__fp_to_dim:w \__fp_to_dim_recover:w - #1 #2 ; + #1 #2 \__fp_sep: } \cs_new:Npn \__fp_to_dim_recover:w #1 { \__fp_invalid_operation:nnw { 0pt } { fp_to_dim } } -\cs_new:Npn \__fp_to_dim:w #1 ; { \__fp_to_decimal:w #1 ; pt } +\cs_new:Npn \__fp_to_dim:w #1 \__fp_sep: { \__fp_to_decimal:w #1 \__fp_sep: pt } \cs_new:Npn \fp_to_int:N #1 { \exp_after:wN \__fp_to_int_dispatch:w #1 } \cs_generate_variant:Nn \fp_to_int:N { c } \cs_new:Npn \fp_to_int:n @@ -21090,24 +21343,24 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_to_int_dispatch:w \exp:w \exp_end_continue_f:w \__fp_parse:n } -\cs_new:Npn \__fp_to_int_dispatch:w #1#2 ; +\cs_new:Npn \__fp_to_int_dispatch:w #1#2 \__fp_sep: { \__fp_change_func_type:NNN #1 \__fp_to_int:w \__fp_to_int_recover:w - #1 #2 ; + #1 #2 \__fp_sep: } \cs_new:Npn \__fp_to_int_recover:w #1 { \__fp_invalid_operation:nnw { 0 } { fp_to_int } } -\cs_new:Npn \__fp_to_int:w #1; +\cs_new:Npn \__fp_to_int:w #1\__fp_sep: { \exp_after:wN \__fp_to_decimal:w \exp:w \exp_end_continue_f:w - \__fp_round:Nwn \__fp_round_to_nearest:NNN #1; { 0 } + \__fp_round:Nwn \__fp_round_to_nearest:NNN #1\__fp_sep: { 0 } } \cs_new:Npn \dim_to_fp:n #1 { \exp_after:wN \__fp_from_dim_test:ww \exp_after:wN 0 \exp_after:wN , - \int_value:w \tex_glueexpr:D #1 ; + \int_value:w \tex_glueexpr:D #1 \__fp_sep: } \cs_new:Npn \__fp_from_dim_test:ww #1, #2 { @@ -21123,18 +21376,18 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \fi: } -\cs_new:Npn \__fp_from_dim:wNw #1,#2#3; +\cs_new:Npn \__fp_from_dim:wNw #1,#2#3\__fp_sep: { - \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim:wNNnnnnnn ; - #3 000 0000 00 {10}987654321; #2 {#1} + \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim:wNNnnnnnn \__fp_sep: + #3 000 0000 00 {10}987654321\__fp_sep: #2 {#1} } -\cs_new:Npn \__fp_from_dim:wNNnnnnnn #1; #2#3#4#5#6#7#8#9 - { \__fp_from_dim:wnnnnwNn #1 {#2#300} {0000} ; } -\cs_new:Npn \__fp_from_dim:wnnnnwNn #1; #2#3#4#5#6; #7#8 +\cs_new:Npn \__fp_from_dim:wNNnnnnnn #1\__fp_sep: #2#3#4#5#6#7#8#9 + { \__fp_from_dim:wnnnnwNn #1 {#2#300} {0000} \__fp_sep: } +\cs_new:Npn \__fp_from_dim:wnnnnwNn #1\__fp_sep: #2#3#4#5#6\__fp_sep: #7#8 { \__fp_mul_npos_o:Nww #7 - \s__fp \__fp_chk:w 1 #7 {#5} #1 ; - \s__fp \__fp_chk:w 1 0 {#8} {1525} {8789} {0625} {0000} ; + \s__fp \__fp_chk:w 1 #7 {#5} #1 \__fp_sep: + \s__fp \__fp_chk:w 1 0 {#8} {1525} {8789} {0625} {0000} \__fp_sep: \prg_do_nothing: } \cs_new_eq:NN \fp_use:N \fp_to_decimal:N @@ -21154,16 +21407,16 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_last_unbraced:Ne \use_ii:nn { - \__fp_array_to_clist_loop:Nw #1 { ? \prg_break: } ; + \__fp_array_to_clist_loop:Nw #1 { ? \prg_break: } \__fp_sep: \prg_break_point: } } } -\cs_new:Npn \__fp_array_to_clist_loop:Nw #1#2; +\cs_new:Npn \__fp_array_to_clist_loop:Nw #1#2\__fp_sep: { \use_none:n #1 , ~ - \exp_not:f { \__fp_to_tl_dispatch:w #1 #2 ; } + \exp_not:f { \__fp_to_tl_dispatch:w #1 #2 \__fp_sep: } \__fp_array_to_clist_loop:Nw } %% File: l3fp-random.dtx @@ -21178,7 +21431,7 @@ Type H <return> for immediate help}\def~{\errmessage{% + \tex_uniformdeviate:D #1 + 8192 ) / 16384 } \cs_new:Npn \__fp_rand_myriads:n #1 - { \__fp_rand_myriads_loop:w #1 \prg_break: X \prg_break_point: ; } + { \__fp_rand_myriads_loop:w #1 \prg_break: X \prg_break_point: \__fp_sep: } \cs_new:Npn \__fp_rand_myriads_loop:w #1 X { #1 @@ -21187,14 +21440,14 @@ Type H <return> for immediate help}\def~{\errmessage{% \__kernel_randint:n { 10000 } \__fp_rand_myriads_loop:w } -\cs_new:Npn \__fp_rand_myriads_get:w 1 #1 ; { ; {#1} } +\cs_new:Npn \__fp_rand_myriads_get:w 1 #1 \__fp_sep: { \__fp_sep: {#1} } \cs_new:Npn \__fp_rand_o:Nw ? #1 @ { \tl_if_empty:nTF {#1} { \exp_after:wN \__fp_rand_o:w \exp:w \exp_end_continue_f:w - \__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } ; 0 + \__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } \__fp_sep: 0 } { \msg_expandable_error:nnnnn @@ -21202,7 +21455,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \c_nan_fp } } -\cs_new:Npn \__fp_rand_o:w ; +\cs_new:Npn \__fp_rand_o:w \__fp_sep: { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN 0 @@ -21216,41 +21469,41 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_randint_default:w \__fp_randint_o:w } } \cs_new:Npn \__fp_randint_default:w #1 { \exp_after:wN #1 \c_one_fp } -\cs_new:Npn \__fp_randint_badarg:w \s__fp \__fp_chk:w #1#2#3; +\cs_new:Npn \__fp_randint_badarg:w \s__fp \__fp_chk:w #1#2#3\__fp_sep: { - \__fp_int:wTF \s__fp \__fp_chk:w #1#2#3; + \__fp_int:wTF \s__fp \__fp_chk:w #1#2#3\__fp_sep: { \if_meaning:w 1 #1 \if_int_compare:w - \__fp_use_i_until_s:nw #3 ; > \c__fp_prec_int + \__fp_use_i_until_s:nw #3 \__fp_sep: > \c__fp_prec_int \c_one_int \fi: \fi: } { \c_one_int } } -\cs_new:Npn \__fp_randint_o:w #1; #2; @ +\cs_new:Npn \__fp_randint_o:w #1\__fp_sep: #2\__fp_sep: @ { \if_case:w - \__fp_randint_badarg:w #1; - \__fp_randint_badarg:w #2; - \if:w 1 \__fp_compare_back:ww #2; #1; \c_one_int \fi: + \__fp_randint_badarg:w #1\__fp_sep: + \__fp_randint_badarg:w #2\__fp_sep: + \if:w 1 \__fp_compare_back:ww #2\__fp_sep: #1\__fp_sep: \c_one_int \fi: \c_zero_int - \__fp_randint_auxi_o:ww #1; #2; + \__fp_randint_auxi_o:ww #1\__fp_sep: #2\__fp_sep: \or: \__fp_invalid_operation_tl_o:ff - { randint } { \__fp_array_to_clist:n { #1; #2; } } + { randint } { \__fp_array_to_clist:n { #1\__fp_sep: #2\__fp_sep: } } \exp:w \fi: \exp_after:wN \exp_end: } -\cs_new:Npn \__fp_randint_auxi_o:ww #1 ; #2 ; #3 \exp_end: +\cs_new:Npn \__fp_randint_auxi_o:ww #1 \__fp_sep: #2 \__fp_sep: #3 \exp_end: { \fi: - \__fp_randint_auxii:wn #2 ; - { \__fp_randint_auxii:wn #1 ; \__fp_randint_auxiii_o:ww } + \__fp_randint_auxii:wn #2 \__fp_sep: + { \__fp_randint_auxii:wn #1 \__fp_sep: \__fp_randint_auxiii_o:ww } } -\cs_new:Npn \__fp_randint_auxii:wn \s__fp \__fp_chk:w #1#2#3#4 ; +\cs_new:Npn \__fp_randint_auxii:wn \s__fp \__fp_chk:w #1#2#3#4 \__fp_sep: { \if_meaning:w 0 #1 \exp_after:wN \use_i:nn @@ -21261,7 +21514,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__fp_ep_to_fixed:wwn \int_value:w \__fp_int_eval:w - #3 - \c__fp_prec_int , #4 {0000} {0000} ; + #3 - \c__fp_prec_int , #4 {0000} {0000} \__fp_sep: { \if_meaning:w 0 #2 \exp_after:wN \use_i:nnnn @@ -21272,22 +21525,22 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_fixed_continue:wn } } -\cs_new:Npn \__fp_randint_auxiii_o:ww #1 ; #2 ; +\cs_new:Npn \__fp_randint_auxiii_o:ww #1 \__fp_sep: #2 \__fp_sep: { - \__fp_fixed_add:wwn #2 ; - {0000} {0000} {0000} {0001} {0000} {0000} ; - \__fp_fixed_sub:wwn #1 ; + \__fp_fixed_add:wwn #2 \__fp_sep: + {0000} {0000} {0000} {0001} {0000} {0000} \__fp_sep: + \__fp_fixed_sub:wwn #1 \__fp_sep: { \exp_after:wN \use_i:nn \exp_after:wN \__fp_fixed_mul_add:wwwn - \exp:w \exp_end_continue_f:w \__fp_rand_myriads:n { XXXXXX } ; + \exp:w \exp_end_continue_f:w \__fp_rand_myriads:n { XXXXXX } \__fp_sep: } - #1 ; + #1 \__fp_sep: \__fp_randint_auxiv_o:ww - #2 ; - \__fp_randint_auxv_o:w #1 ; @ + #2 \__fp_sep: + \__fp_randint_auxv_o:w #1 \__fp_sep: @ } -\cs_new:Npn \__fp_randint_auxiv_o:ww #1#2#3#4#5 ; #6#7#8#9 +\cs_new:Npn \__fp_randint_auxiv_o:ww #1#2#3#4#5 \__fp_sep: #6#7#8#9 { \if_int_compare:w \if_int_compare:w #1#2 > #6#7 \exp_stop_f: 1 \else: @@ -21297,7 +21550,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \fi: \__fp_randint_auxv_o:w {#1}{#2}{#3}{#4}#5 } -\cs_new:Npn \__fp_randint_auxv_o:w #1#2#3#4#5 ; #6 @ +\cs_new:Npn \__fp_randint_auxv_o:w #1#2#3#4#5 \__fp_sep: #6 @ { \exp_after:wN \__fp_sanitize:Nw \int_value:w @@ -21309,7 +21562,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_reverse_args:Nww \fi: \exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl - {#1} {#2} {#3} {#4} {0000} {0000} ; + {#1} {#2} {#3} {#4} {0000} {0000} \__fp_sep: { \exp_after:wN \exp_stop_f: \int_value:w \__fp_int_eval:w \c__fp_prec_int @@ -21323,16 +21576,16 @@ Type H <return> for immediate help}\def~{\errmessage{% \int_eval:n { \exp_after:wN \__fp_randint:ww - \int_value:w \int_eval:n {#1} \exp_after:wN ; - \int_value:w \int_eval:n {#2} ; + \int_value:w \int_eval:n {#1} \exp_after:wN \__fp_sep: + \int_value:w \int_eval:n {#2} \__fp_sep: } } -\cs_new:Npn \__fp_randint:ww #1; #2; +\cs_new:Npn \__fp_randint:ww #1\__fp_sep: #2\__fp_sep: { \if_int_compare:w #1 > #2 \exp_stop_f: \msg_expandable_error:nnnn { kernel } { randint-backward-range } {#1} {#2} - \__fp_randint:ww #2; #1; + \__fp_randint:ww #2\__fp_sep: #1\__fp_sep: \else: \if_int_compare:w \__fp_int_eval:w #2 \if_int_compare:w #1 > \c_zero_int @@ -21356,46 +21609,49 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_randint_wide_aux:w \int_value:w \exp_after:wN \__fp_randint_split_o:Nw - \tex_uniformdeviate:D 268435456 ; + \tex_uniformdeviate:D 268435456 \__fp_sep: \int_value:w \exp_after:wN \__fp_randint_split_o:Nw - \tex_uniformdeviate:D 268435456 ; + \tex_uniformdeviate:D 268435456 \__fp_sep: \int_value:w \exp_after:wN \__fp_randint_split_o:Nw \int_value:w \__fp_int_eval:w 131072 + \exp_after:wN \__fp_randint_split_o:Nw \int_value:w - \__kernel_int_add:nnn {#2} { -#1 } { -\c_max_int } ; + \__kernel_int_add:nnn {#2} { -#1 } { -\c_max_int } \__fp_sep: . } -\cs_new:Npn \__fp_randint_split_o:Nw #1#2 ; +\cs_new:Npn \__fp_randint_split_o:Nw #1#2 \__fp_sep: { \if_meaning:w 0 #1 - 0 \exp_after:wN ; \int_value:w 0 + 0 \exp_after:wN \__fp_sep: \int_value:w 0 \else: \exp_after:wN \__fp_randint_split_aux:w - \int_value:w \__fp_int_eval:w (#1#2 - 8192) / 16384 ; + \int_value:w \__fp_int_eval:w (#1#2 - 8192) / 16384 \__fp_sep: + #1#2 \fi: - \exp_after:wN ; + \exp_after:wN \__fp_sep: } -\cs_new:Npn \__fp_randint_split_aux:w #1 ; +\cs_new:Npn \__fp_randint_split_aux:w #1 \__fp_sep: { - #1 \exp_after:wN ; + #1 \exp_after:wN \__fp_sep: \int_value:w \__fp_int_eval:w - #1 * 16384 } -\cs_new:Npn \__fp_randint_wide_aux:w #1;#2; #3;#4; #5;#6;#7; . +\cs_new:Npn \__fp_randint_wide_aux:w + #1\__fp_sep:#2\__fp_sep: #3\__fp_sep:#4\__fp_sep: + #5\__fp_sep:#6\__fp_sep:#7\__fp_sep: . { \exp_after:wN \__fp_randint_wide_auxii:w \int_value:w \__fp_int_eval:w #5 * #3 + #6 * #1 + (#5 * #4 + #6 * #3 + #7 * #1 + (#5 * #2 + #7 * #3 + (16384 * #6 + #7) * (16384 * #4 + #2) / 268435456) / 16384 - ) / 16384 \exp_after:wN ; - \int_value:w \__fp_int_eval:w (#5 + #6) * 16384 + #7 ; - #1 ; #5 ; + ) / 16384 \exp_after:wN \__fp_sep: + \int_value:w \__fp_int_eval:w (#5 + #6) * 16384 + #7 \__fp_sep: + #1 \__fp_sep: #5 \__fp_sep: } -\cs_new:Npn \__fp_randint_wide_auxii:w #1; #2; #3; #4; +\cs_new:Npn \__fp_randint_wide_auxii:w + #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4\__fp_sep: { \if_int_odd:w 0 \if_int_compare:w #1 = #2 \else: \exp_stop_f: \fi: @@ -21422,7 +21678,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \if_int_compare:w #1 < \c_one_int \msg_expandable_error:nnnn { kernel } { randint-backward-range } { 1 } {#1} - \__fp_randint:ww #1; 1; + \__fp_randint:ww #1\__fp_sep: 1\__fp_sep: \else: \if_int_compare:w #1 > \c__kernel_randint_max_int \__kernel_randint:nn { 1 } {#1} @@ -21470,7 +21726,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_last_unbraced:Nf \__fp_types_binary_auxi:Nww { \__fp_types_cs_to_op:N #1 } } -\cs_new:Npn \__fp_types_binary_auxi:Nww #1#2#3; #4#5; @ +\cs_new:Npn \__fp_types_binary_auxi:Nww #1#2#3\__fp_sep: #4#5\__fp_sep: @ { \exp_after:wN \__fp_types_binary_auxii:NNww \cs:w @@ -21480,7 +21736,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_type_from_scan:N #4 _o:ww \cs_end: - #1 #2#3; #4#5; + #1 #2#3\__fp_sep: #4#5\__fp_sep: } \cs_new:Npn \__fp_types_binary_auxii:NNww #1#2 { @@ -21491,12 +21747,12 @@ Type H <return> for immediate help}\def~{\errmessage{% %% File l3fp-symbolic.dtx (C) Copyright 2012-2015,2017,2018,2020,2021,2023 The LaTeX Project \fp_new:N \l__fp_symbolic_fp \scan_new:N \s__fp_symbolic -\cs_new_protected:Npn \__fp_symbolic_chk:w #1,#2#3; +\cs_new_protected:Npn \__fp_symbolic_chk:w #1,#2#3\__fp_sep: { \msg_error:nne { fp } { misused-fp } { \__fp_to_tl_dispatch:w - \s__fp_symbolic \__fp_symbolic_chk:w #1,{#2}; + \s__fp_symbolic \__fp_symbolic_chk:w #1,{#2}\__fp_sep: } } \cs_new:Npn \__fp_if_has_symbolic:nTF #1 @@ -21509,7 +21765,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__fp_if_has_symbolic_aux:w #1 \s__fp_symbolic #2 \s__fp_mark #3#4 \s__fp_stop { #3 } \cs_new:Npn \__fp_exp_after_symbolic_f:nw - #1 \s__fp_symbolic \__fp_symbolic_chk:w #2, #3#4; + #1 \s__fp_symbolic \__fp_symbolic_chk:w #2, #3#4\__fp_sep: { \exp_after:wN \__fp_exp_after_symbolic_aux:w \exp:w @@ -21521,13 +21777,13 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_exp_after_array_f:w #3 \s__fp_expr_stop \exp_after:wN } - \exp_after:wN ; + \exp_after:wN \__fp_sep: \exp:w \exp_end_continue_f:w #1 } -\cs_new:Npn \__fp_exp_after_symbolic_aux:w #1, #2; +\cs_new:Npn \__fp_exp_after_symbolic_aux:w #1, #2\__fp_sep: { \__fp_if_has_symbolic:nTF {#2} - { \s__fp_symbolic \__fp_symbolic_chk:w #1, {#2} ; } + { \s__fp_symbolic \__fp_symbolic_chk:w #1, {#2} \__fp_sep: } { #1 #2 @ \prg_do_nothing: } } \cs_new:Npn \__fp_exp_after_symbolic_loop:N #1 @@ -21537,11 +21793,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp:w \__fp_exp_after_symbolic_loop:N } -\cs_new:Npn \__fp_symbolic_binary_o:Nww #1 #2; #3; +\cs_new:Npn \__fp_symbolic_binary_o:Nww #1 #2\__fp_sep: #3\__fp_sep: { \__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: } \s__fp_symbolic \__fp_symbolic_chk:w - \__fp_types_binary:Nww #1 , { #2; #3; } ; + \__fp_types_binary:Nww #1 , { #2\__fp_sep: #3\__fp_sep: } \__fp_sep: } \cs_set_protected:Npn \__fp_tmp:w #1#2 { @@ -21557,11 +21813,11 @@ Type H <return> for immediate help}\def~{\errmessage{% } \tl_map_inline:nn { + - * / ^ & | } { \exp_args:Nc \__fp_tmp:w { __fp_#1_o:ww } {#1} } -\cs_new:Npn \__fp_symbolic_unary_o:NNw #1#2#3; @ +\cs_new:Npn \__fp_symbolic_unary_o:NNw #1#2#3\__fp_sep: @ { \__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: } \s__fp_symbolic \__fp_symbolic_chk:w - \__fp_types_unary:NNw #1#2 , { #3; } ; + \__fp_types_unary:NNw #1#2 , { #3\__fp_sep: } \__fp_sep: } \tl_map_inline:nn { @@ -21587,11 +21843,11 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_tmp:w { decimal } { 0 } \__fp_to_decimal_dispatch:w \__fp_tmp:w { int } { 0 } \__fp_to_int_dispatch:w \__fp_tmp:w { scientific } { nan } \__fp_to_scientific_dispatch:w -\cs_new:Npn \__fp_symbolic_convert:wnnN #1#2; #3#4#5 +\cs_new:Npn \__fp_symbolic_convert:wnnN #1#2\__fp_sep: #3#4#5 { \str_if_eq:nnTF {#1} { \s__fp_symbolic } - { \__fp_invalid_operation:nnw {#3} {#4} #1#2; } - { #5 #1#2; } + { \__fp_invalid_operation:nnw {#3} {#4} #1#2\__fp_sep: } + { #5 #1#2\__fp_sep: } } \cs_new:Npn \__fp_symbolic_cs_arg_to_fn:NN #1 { @@ -21612,7 +21868,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } } \cs_new:Npn \__fp_symbolic_to_tl:w - \s__fp_symbolic \__fp_symbolic_chk:w #1#2, #3#4; + \s__fp_symbolic \__fp_symbolic_chk:w #1#2, #3#4\__fp_sep: { \str_case:nnTF {#1} { @@ -21631,13 +21887,13 @@ Type H <return> for immediate help}\def~{\errmessage{% ( \__fp_to_tl_dispatch:w #3 ) } } -\cs_new:Npn \__fp_symbolic_binary_to_tl:Nww #1, #2; #3; @ +\cs_new:Npn \__fp_symbolic_binary_to_tl:Nww #1, #2\__fp_sep: #3\__fp_sep: @ { \use:e { - ( \__fp_to_tl_dispatch:w #2; ) + ( \__fp_to_tl_dispatch:w #2\__fp_sep: ) \__fp_types_cs_to_op:N #1 - ( \__fp_to_tl_dispatch:w #3; ) + ( \__fp_to_tl_dispatch:w #3\__fp_sep: ) } } \cs_new:Npn \__fp_symbolic_function_to_tl:Nw #1, #2@ @@ -21685,7 +21941,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \token_if_eq_meaning:NNTF #2 \prg_do_nothing: { \s__fp_symbolic \__fp_symbolic_chk:w - \__fp_variable_o:w #1 , { } ; + \__fp_variable_o:w #1 , { } \__fp_sep: } { \exp_after:wN \s__fp_symbolic @@ -21695,7 +21951,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_exp_after_symbolic_loop:N #1 { , \exp:w \use_none:nn } \exp_after:wN \exp_end: - \exp_after:wN { \exp_after:wN } \exp_after:wN ; + \exp_after:wN { \exp_after:wN } \exp_after:wN \__fp_sep: #2 } } @@ -21706,7 +21962,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \__fp_exp_after_symbolic_f:nw { \__fp_parse_infix:NN } \s__fp_symbolic \__fp_symbolic_chk:w - \__fp_variable_o:w #2 , { } ; + \__fp_variable_o:w #2 , { } \__fp_sep: } \exp_args:NNc \__fp_variable_set_parsing_aux:NNn #1 { __fp_parse_word_#2:N } {#2} @@ -21871,7 +22127,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_exp_after_array_f:w #2 \s__fp_expr_stop \exp_after:wN } - \exp_after:wN ; + \exp_after:wN \__fp_sep: } } \int_new:N \l__fp_function_arg_int @@ -21903,7 +22159,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_not:N \__fp_symbolic_chk:w \exp_not:N \__fp_function_arg_o:w \int_use:N \l__fp_function_arg_int - ########1 , { } ; + ########1 , { } \__fp_sep: } } \cs_set:Npn \__fp_function_arg_o:w ##1 @ @@ -21915,7 +22171,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \__fp_exp_after_symbolic_loop:N ##1 { , \tex_romannumeral:D \use_none:nn } \exp_after:wN \c_zero_int - \exp_after:wN { \exp_after:wN } \exp_after:wN ; + \exp_after:wN { \exp_after:wN } \exp_after:wN \__fp_sep: } \fp_set:Nn \l__fp_symbolic_fp {#4} \use:e @@ -21952,9 +22208,9 @@ Type H <return> for immediate help}\def~{\errmessage{% #2 } \cs_new:Npn \__fp_function_arg_few:w #1 @ { \exp_after:wN \c_nan_fp } -\cs_new:Npn \__fp_function_arg_get:w #1#2#3; #4 @ +\cs_new:Npn \__fp_function_arg_get:w #1#2#3\__fp_sep: #4 @ { - \__fp_exp_after_array_f:w #3; \s__fp_expr_stop + \__fp_exp_after_array_f:w #3\__fp_sep: \s__fp_expr_stop \exp_after:wN \exp_stop_f: } \cs_new_protected:Npn \fp_clear_function:n #1 @@ -22029,25 +22285,25 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_after:wN \__fp_array_gset:NNNNww \exp_after:wN #1 \exp_after:wN #1 - \int_value:w \int_eval:n {#2} \exp_after:wN ; + \int_value:w \int_eval:n {#2} \exp_after:wN \__fp_sep: \exp:w \exp_end_continue_f:w \__fp_parse:n {#3} } \cs_generate_variant:Nn \fparray_gset:Nnn { c } -\cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 ; #6 ; +\cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 \__fp_sep: #6 \__fp_sep: { \__fp_array_bounds:NNnTF \msg_error:nneee #4 {#5} { \exp_after:wN \__fp_change_func_type:NNN - \__fp_use_i_until_s:nw #6 ; + \__fp_use_i_until_s:nw #6 \__fp_sep: \__fp_array_gset:w \__fp_array_gset_recover:Nw - #6 ; {#5} #1 #2 #3 + #6 \__fp_sep: {#5} #1 #2 #3 } { } } -\cs_new_protected:Npn \__fp_array_gset_recover:Nw #1#2 ; +\cs_new_protected:Npn \__fp_array_gset_recover:Nw #1#2 \__fp_sep: { - \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { } + \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { } \exp_after:wN #1 \c_nan_fp } \cs_new_protected:Npn \__fp_array_gset:w \s__fp \__fp_chk:w #1#2 @@ -22061,7 +22317,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \s__fp \__fp_chk:w #1 #2 } \cs_new_protected:Npn \__fp_array_gset_normal:w - \s__fp \__fp_chk:w 1 #1 #2 #3#4#5 ; #6#7#8#9 + \s__fp \__fp_chk:w 1 #1 #2 #3#4#5 \__fp_sep: #6#7#8#9 { \__kernel_intarray_gset:Nnn #7 {#6} {#2} \__kernel_intarray_gset:Nnn #8 {#6} @@ -22091,7 +22347,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__fp_array_item:NwN \exp_after:wN #1 - \int_value:w \int_eval:n {#2} ; + \int_value:w \int_eval:n {#2} \__fp_sep: \__fp_to_decimal:w } \cs_generate_variant:Nn \fparray_item:Nn { c } @@ -22099,11 +22355,11 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_after:wN \__fp_array_item:NwN \exp_after:wN #1 - \int_value:w \int_eval:n {#2} ; + \int_value:w \int_eval:n {#2} \__fp_sep: \__fp_to_tl:w } \cs_generate_variant:Nn \fparray_item_to_tl:Nn { c } -\cs_new:Npn \__fp_array_item:NwN #1#2 ; #3 +\cs_new:Npn \__fp_array_item:NwN #1#2 \__fp_sep: #3 { \__fp_array_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2} { \exp_after:wN \__fp_array_item:NNNnN #1 {#2} #3 } @@ -22112,22 +22368,22 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__fp_array_item:NNNnN #1#2#3#4 { \exp_after:wN \__fp_array_item:N - \int_value:w \__kernel_intarray_item:Nn #2 {#4} \exp_after:wN ; - \int_value:w \__kernel_intarray_item:Nn #3 {#4} \exp_after:wN ; - \int_value:w \__kernel_intarray_item:Nn #1 {#4} ; + \int_value:w \__kernel_intarray_item:Nn #2 {#4} \exp_after:wN \__fp_sep: + \int_value:w \__kernel_intarray_item:Nn #3 {#4} \exp_after:wN \__fp_sep: + \int_value:w \__kernel_intarray_item:Nn #1 {#4} \__fp_sep: } \cs_new:Npn \__fp_array_item:N #1 { \if_meaning:w 0 #1 \exp_after:wN \__fp_array_item_special:w \fi: \__fp_array_item:w #1 } -\cs_new:Npn \__fp_array_item:w #1 #2#3#4#5 #6 ; 1 #7 ; +\cs_new:Npn \__fp_array_item:w #1 #2#3#4#5 #6 \__fp_sep: 1 #7 \__fp_sep: { \exp_after:wN \__fp_array_item_normal:w \int_value:w \if_meaning:w #1 1 0 \else: 2 \fi: \exp_stop_f: - #7 ; {#2#3#4#5} {#6} ; + #7 \__fp_sep: {#2#3#4#5} {#6} \__fp_sep: } -\cs_new:Npn \__fp_array_item_special:w #1 ; #2 ; #3 ; #4 +\cs_new:Npn \__fp_array_item_special:w #1 \__fp_sep: #2 \__fp_sep: #3 \__fp_sep: #4 { \exp_after:wN #4 \exp:w \exp_end_continue_f:w @@ -22139,8 +22395,9 @@ Type H <return> for immediate help}\def~{\errmessage{% \else: \exp_after:wN \c_minus_inf_fp \fi: } -\cs_new:Npn \__fp_array_item_normal:w #1 #2#3#4#5 #6 ; #7 ; #8 ; #9 - { #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} ; } +\cs_new:Npn \__fp_array_item_normal:w + #1 #2#3#4#5 #6 \__fp_sep: #7 \__fp_sep: #8 \__fp_sep: #9 + { #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} \__fp_sep: } \prg_new_eq_conditional:NNn \fparray_if_exist:N \cs_if_exist:N { TF , T , F , p } \prg_new_eq_conditional:NNn \fparray_if_exist:c \cs_if_exist:c @@ -22288,6 +22545,8 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_generate_variant:Nn \bitset_to_arabic:N { c } \cs_generate_variant:Nn \bitset_to_bin:N { c } +\cs_new_eq:NN \bitset_use:N \tl_use:N +\cs_generate_variant:Nn \bitset_use:N { c } \cs_new:Npn \bitset_item:Nn #1#2 { \prop_if_in:cnTF { g__bitset_ \cs_to_str:N #1 _name_prop } {#2} @@ -22670,8 +22929,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \group_begin: \int_set:Nn \tex_endlinechar:D { 32 } \char_set_catcode_invalid:n { 0 } - \bool_lazy_or:nnTF - { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: } + \sys_if_engine_opentype:TF { \int_step_function:nN { 31 } \char_set_catcode_invalid:n } { \int_step_function:nN { 31 } \char_set_catcode_active:n } \int_step_function:nnN { 33 } { 64 } \char_set_catcode_other:n @@ -22696,8 +22954,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \char_set_catcode_group_end:n { 125 } % right brace \char_set_catcode_space:n { 126 } % tilde \char_set_catcode_invalid:n { 127 } % ^^? - \bool_lazy_or:nnF - { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: } + \sys_if_engine_opentype:F { \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n } \__cctab_gset:n { \c_code_cctab } \group_end: @@ -24476,9 +24733,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \exp_args:Ne \tl_to_str:n { \str_map_function:nN {#1} \__str_convert_pdfname:n } } -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \__str_convert_pdfname:n #1 { @@ -24885,27 +25140,30 @@ Type H <return> for immediate help}\def~{\errmessage{% \__tl_analysis_map:NwNw #1 } \cs_new_protected:Npn \tl_analysis_show:N - { \__tl_analysis_show:NNN \msg_show:nneeee \tl_show:N } + { \__tl_analysis_show:NNnnN \msg_show:nneeee \tl_show:N {} {} } \cs_new_protected:Npn \tl_analysis_log:N - { \__tl_analysis_show:NNN \msg_log:nneeee \tl_log:N } -\cs_new_protected:Npn \__tl_analysis_show:NNN #1#2#3 { - \tl_if_exist:NTF #3 + \__tl_analysis_show:NNnnN \msg_log:nneeee \tl_log:N + { \iow_newline: >~ . } { . } + } +\cs_new_protected:Npn \__tl_analysis_show:NNnnN #1#2#3#4#5 + { + \tl_if_exist:NTF #5 { - \exp_args:No \__tl_analysis:n {#3} + \exp_args:No \__tl_analysis:n {#5} #1 { tl } { show-analysis } - { \token_to_str:N #3 } { \__tl_analysis_show: } { } { } + { \token_to_str:N #5 } { \__tl_analysis_show: } {#3} {#4} } { #2 #3 } } \cs_new_protected:Npn \tl_analysis_show:n - { \__tl_analysis_show:Nn \msg_show:nneeee } + { \__tl_analysis_show:Nnnn \msg_show:nneeee {} {} } \cs_new_protected:Npn \tl_analysis_log:n - { \__tl_analysis_show:Nn \msg_log:nneeee } -\cs_new_protected:Npn \__tl_analysis_show:Nn #1#2 + { \__tl_analysis_show:Nnnn \msg_log:nneeee { \iow_newline: >~ . } { . } } +\cs_new_protected:Npn \__tl_analysis_show:Nnnn #1#2#3#4 { - \__tl_analysis:n {#2} - #1 { tl } { show-analysis } { } { \__tl_analysis_show: } { } { } + \__tl_analysis:n {#4} + #1 { tl } { show-analysis } { } { \__tl_analysis_show: } {#2} {#3} } \cs_new:Npn \__tl_analysis_show: { @@ -25238,8 +25496,8 @@ Type H <return> for immediate help}\def~{\errmessage{% { The~token~list~ \tl_if_empty:nF {#1} { #1 ~ } \tl_if_empty:nTF {#2} - { is~empty } - { contains~the~tokens: #2 } + { is~empty #3 } + { contains~the~tokens: #2 #4 } } %% File: l3regex.dtx \cs_new_eq:NN \__regex_int_eval:w \tex_numexpr:D @@ -30570,11 +30828,19 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new_protected:Npn \color_select:nn #1#2 { - \__color_select_main:Nw \l__color_current_tl - #1 / / \s__color_mark #2 / / \s__color_stop + \__color_select_main:Nnn \l__color_current_tl {#1} {#2} \__color_finalise_current: \__color_select:N \l__color_current_tl } +\cs_new_protected:Npn \__color_select_main:Nnn #1#2#3 + { + \use:e + { + \exp_not:N \__color_select_main:Nw \exp_not:N #1 + \exp_not:n {#2} / / \exp_not:N \s__color_mark + #3 / / \exp_not:N \s__color_stop + } + } \cs_new_protected:Npn \__color_select_main:Nw #1 #2 / #3 / #4 \s__color_mark #5 / #6 / #7 \s__color_stop { @@ -30621,10 +30887,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_protected:Npn \color_math:nnn #1#2#3 { \__color_math:nn {#3} - { - \__color_select_main:Nw \l__color_current_tl - #1 / / \s__color_mark #2 / / \s__color_stop - } + { \__color_select_main:Nnn \l__color_current_tl {#1} {#2} } } \cs_new_protected:Npn \__color_math:nn #1#2 { @@ -30722,14 +30985,12 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new_protected:Npn \color_fill:nn #1#2 { - \__color_select_main:Nw \l__color_current_tl - #1 / / \s__color_mark #2 / / \s__color_stop + \__color_select_main:Nnn \l__color_current_tl {#1} {#2} \exp_after:wN \__color_draw:nnn \l__color_current_tl { fill } } \cs_new_protected:Npn \color_stroke:nn #1#2 { - \__color_select_main:Nw \l__color_current_tl - #1 / / \s__color_mark #2 / / \s__color_stop + \__color_select_main:Nnn \l__color_current_tl {#1} {#2} \exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke } } \cs_new_protected:Npn \__color_draw:nnn #1#2#3 @@ -30858,6 +31119,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \prop_new:c { l__color_named_._prop } \tl_new:c { l__color_named_._tl } \tl_set:ce { l__color_named_._tl } { \__color_model:N \l__color_current_tl } +\prop_put:cve { l__color_named_._prop } { l__color_named_._tl } + { \__color_values:N \l__color_current_tl } \cs_new_protected:Npn \color_export:nnN #1#2#3 { \group_begin: @@ -30870,8 +31133,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } \cs_new_protected:Npn \color_export:nnnN #1#2#3#4 { - \__color_select_main:Nw #4 - #1 / / \s__color_mark #2 / / \s__color_stop + \__color_select_main:Nnn #4 {#1} {#2} \__color_export:nN {#3} #4 } \cs_new_protected:Npn \__color_export:nN #1#2 @@ -32264,7 +32526,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_protected:Npn \vcoffin_gset_end: { } \cs_new_protected:Npn \coffin_set_eq:NN #1#2 { - \__coffin_if_exist:NT #1 + \__coffin_if_exist:NT #2 { \box_set_eq:NN #1 #2 \prop_set_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners } @@ -32276,7 +32538,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_generate_variant:Nn \coffin_set_eq:NN { c , Nc , cc } \cs_new_protected:Npn \coffin_gset_eq:NN #1#2 { - \__coffin_if_exist:NT #1 + \__coffin_if_exist:NT #2 { \box_gset_eq:NN #1 #2 \prop_gset_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners } @@ -32297,6 +32559,8 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new_eq:NN \coffin_dp:c \box_dp:c \cs_new_eq:NN \coffin_ht:N \box_ht:N \cs_new_eq:NN \coffin_ht:c \box_ht:c +\cs_new_eq:NN \coffin_ht_plus_dp:N \box_ht_plus_dp:N +\cs_new_eq:NN \coffin_ht_plus_dp:c \box_ht_plus_dp:c \cs_new_eq:NN \coffin_wd:N \box_wd:N \cs_new_eq:NN \coffin_wd:c \box_wd:c \cs_new_protected:Npn \__coffin_get_pole:NnN #1#2#3 @@ -33361,9 +33625,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX } \prop_gput:Nnn \g_msg_module_type_prop { luatex } { } %% File: l3unicode.dtx -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \codepoint_str_generate:n #1 { @@ -33541,9 +33803,7 @@ Type H <return> for immediate help}\def~{\errmessage{% { \exp_args:Ne \__codepoint_to_nfd:n { \int_eval:n {#1} } } \cs_new:Npn \__codepoint_to_nfd:n #1 { \__codepoint_to_nfd:nn {#1} { \char_value_catcode:n {#1} } } -\bool_lazy_or:nnF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:F { \cs_gset:Npn \__codepoint_to_nfd:n #1 { @@ -34131,9 +34391,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } { \prg_return_false: } } -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \__text_codepoint_process:nN #1#2 { #1 {#2} } } @@ -34171,9 +34429,7 @@ Type H <return> for immediate help}\def~{\errmessage{% \cs_new:Npn \__text_codepoint_process:nNNNN #1#2#3#4#5 { #1 {#2#3#4#5} } } -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \prg_new_conditional:Npnn \__text_codepoint_compare:nNn #1#2#3 { TF , p } @@ -35165,9 +35421,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } } } -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \__text_change_case_catcode:nn #1#2 { \__text_char_catcode:N #1 } @@ -36281,9 +36535,7 @@ Type H <return> for immediate help}\def~{\errmessage{% } } } -\bool_lazy_or:nnF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:F { \text_declare_uppercase_mapping:nn { "01F0 } { \v { J } } } |