[latex3-commits] [git/LaTeX3-latex3-latex3] master: Implement multiplication and division of tuple by a number (c0da09f)

Bruno Le Floch bruno at le-floch.fr
Mon Feb 12 03:02:34 CET 2018


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/c0da09f02160aa3928b30692ae45c6c25501e113

>---------------------------------------------------------------

commit c0da09f02160aa3928b30692ae45c6c25501e113
Author: Bruno Le Floch <bruno at le-floch.fr>
Date:   Sun Feb 11 15:52:59 2018 -0500

    Implement multiplication and division of tuple by a number


>---------------------------------------------------------------

c0da09f02160aa3928b30692ae45c6c25501e113
 l3kernel/l3fp-basics.dtx                |   55 +++++++++++++-----------------
 l3kernel/l3fp-parse.dtx                 |   56 +++++++++++++++++++++++++------
 l3kernel/testfiles/m3expl001.luatex.tlg |   16 +++++----
 l3kernel/testfiles/m3expl001.ptex.tlg   |   16 +++++----
 l3kernel/testfiles/m3expl001.tlg        |   16 +++++----
 l3kernel/testfiles/m3expl001.uptex.tlg  |   16 +++++----
 l3kernel/testfiles/m3expl001.xetex.tlg  |   16 +++++----
 l3kernel/testfiles/m3expl003.luatex.tlg |   16 +++++----
 l3kernel/testfiles/m3expl003.ptex.tlg   |   16 +++++----
 l3kernel/testfiles/m3expl003.tlg        |   16 +++++----
 l3kernel/testfiles/m3expl003.uptex.tlg  |   16 +++++----
 l3kernel/testfiles/m3expl003.xetex.tlg  |   16 +++++----
 l3kernel/testfiles/m3fp-parse001.tlg    |   11 +-----
 l3kernel/testfiles/m3fp-parse002.tlg    |   22 ++----------
 14 files changed, 162 insertions(+), 142 deletions(-)

diff --git a/l3kernel/l3fp-basics.dtx b/l3kernel/l3fp-basics.dtx
index bb7bbf6..ab3d696 100644
--- a/l3kernel/l3fp-basics.dtx
+++ b/l3kernel/l3fp-basics.dtx
@@ -2085,7 +2085,7 @@
     \@@_invalid_operation_o:nw { abs }
   }
 \cs_new:Npn \@@_tuple_set_sign_aux_o:Nnw #1#2#3 @
-  { \@@_tuple_map_o:Nw \@@_tuple_set_sign_aux_o:w #3 }
+  { \@@_tuple_map_o:nw \@@_tuple_set_sign_aux_o:w #3 }
 \cs_new:Npn \@@_tuple_set_sign_aux_o:w #1#2 ;
   {
     \@@_change_func_type:NNN #1 \@@_set_sign_o:w
@@ -2096,52 +2096,45 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}[EXP]{\@@_*_tuple_o:ww, \@@_tuple_*_o:ww, \@@_tuple_/_o:ww}
+%   For \meta{number}|*|\meta{tuple} and \meta{tuple}|*|\meta{number}
+%   and \meta{tuple}|/|\meta{number}, loop through the \meta{tuple} some
+%   code that multiplies or divides by the appropriate \meta{number}.
+%   Importantly we need to dispatch according to the type, and we make
+%   sure to apply the operator in the correct order.
+%    \begin{macrocode}
+\cs_new:cpn { @@_*_tuple_o:ww } #1 ;
+  { \@@_tuple_map_o:nw { \@@_binary_type_o:Nww * #1 ; } }
+\cs_new:cpn { @@_tuple_*_o:ww } #1 ; #2 ;
+  { \@@_tuple_map_o:nw { \@@_binary_rev_type_o:Nww * #2 ; } #1 ; }
+\cs_new:cpn { @@_tuple_/_o:ww } #1 ; #2 ;
+  { \@@_tuple_map_o:nw { \@@_binary_rev_type_o:Nww / #2 ; } #1 ; }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}[EXP]{\@@_tuple_+_tuple_o:ww, \@@_tuple_-_tuple_o:ww}
-% \begin{macro}[EXP]{\@@_add_tuple_aux_o:ww, \@@_sub_tuple_aux_o:ww}
-% \begin{macro}[EXP]{\@@_add_tuple_aux_o:Nww}
 %   Check the two tuples have the same number of items and map through
 %   these a helper that dispatches appropriately depending on the types.
 %   This means |(1,2)+((1,1),2)| gives |(nan,4)|.
 %    \begin{macrocode}
-\cs_set_protected:Npn \@@_tmp:w #1#2
+\cs_set_protected:Npn \@@_tmp:w #1
   {
     \cs_new:cpn { @@_tuple_#1_tuple_o:ww }
         \s_@@_tuple \@@_tuple_chk:w ##1 ;
         \s_@@_tuple \@@_tuple_chk:w ##2 ;
       {
-        \if_int_compare:w
-            \@@_array_count:n {##1} = \@@_array_count:n {##2} \exp_stop_f:
-          \exp_after:wN \@@_tuple_mapthread_o:Nww
-          \exp_after:wN #2
-        \else:
-          \exp_after:wN \@@_invalid_operation_o:Nww
-          \exp_after:wN #1
-        \fi:
+        \int_compare:nNnTF
+          { \@@_array_count:n {##1} } = { \@@_array_count:n {##2} }
+          { \@@_tuple_mapthread_o:nww { \@@_binary_type_o:Nww #1 } }
+          { \@@_invalid_operation_o:nww #1 }
         \s_@@_tuple \@@_tuple_chk:w {##1} ;
         \s_@@_tuple \@@_tuple_chk:w {##2} ;
       }
   }
-\@@_tmp:w + \@@_add_tuple_aux_o:ww
-\@@_tmp:w - \@@_sub_tuple_aux_o:ww
-\cs_new:Npn \@@_add_tuple_aux_o:ww { \@@_add_tuple_aux_o:Nww + }
-\cs_new:Npn \@@_sub_tuple_aux_o:ww { \@@_add_tuple_aux_o:Nww - }
-\cs_new:Npn \@@_add_tuple_aux_o:Nww #1 #2#3 ; #4#5 ;
-  {
-    \exp_after:wN \@@_parse_apply_binary_chk:NN
-      \cs:w
-        @@
-        \@@_type_from_scan:N #2
-        _ #1
-        \@@_type_from_scan:N #4
-        _o:ww
-      \cs_end:
-      #1
-    #2 #3 ; #4 #5 ;
-  }
+\@@_tmp:w +
+\@@_tmp:w -
 %    \end{macrocode}
 % \end{macro}
-% \end{macro}
-% \end{macro}
 %
 %    \begin{macrocode}
 %</initex|package>
diff --git a/l3kernel/l3fp-parse.dtx b/l3kernel/l3fp-parse.dtx
index 8ee8861..35b3a41 100644
--- a/l3kernel/l3fp-parse.dtx
+++ b/l3kernel/l3fp-parse.dtx
@@ -2176,6 +2176,40 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}[EXP]{\@@_binary_type_o:Nww, \@@_binary_rev_type_o:Nww}
+%   Applies the operator |#1| to its two arguments, dispatching
+%   according to their types, and expands once after the result.
+%   The |rev| version swaps its arguments before doing this.
+%    \begin{macrocode}
+\cs_new:Npn \@@_binary_type_o:Nww #1 #2#3 ; #4
+  {
+    \exp_after:wN \@@_parse_apply_binary_chk:NN
+      \cs:w
+        @@
+        \@@_type_from_scan:N #2
+        _ #1
+        \@@_type_from_scan:N #4
+        _o:ww
+      \cs_end:
+      #1
+    #2 #3 ; #4
+  }
+\cs_new:Npn \@@_binary_rev_type_o:Nww #1 #2#3 ; #4#5 ;
+  {
+    \exp_after:wN \@@_parse_apply_binary_chk:NN
+      \cs:w
+        @@
+        \@@_type_from_scan:N #4
+        _ #1
+        \@@_type_from_scan:N #2
+        _o:ww
+      \cs_end:
+      #1
+    #4 #5 ; #2 #3 ;
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Infix operators}
 %
 % \begin{macro}[EXP]{\@@_parse_infix_after_operand:NwN}
@@ -2685,37 +2719,37 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[EXP]{\@@_tuple_map_o:Nw, \@@_tuple_map_loop_o:Nw}
+% \begin{macro}[EXP]{\@@_tuple_map_o:nw, \@@_tuple_map_loop_o:nw}
 %   Apply |#1| to all items in the following tuple and expand once
-%   afterwards.  The function |#1| should itself expand once after its
+%   afterwards.  The code |#1| should itself expand once after its
 %   result.
 %    \begin{macrocode}
-\cs_new:Npn \@@_tuple_map_o:Nw #1 \s_@@_tuple \@@_tuple_chk:w #2 ;
+\cs_new:Npn \@@_tuple_map_o:nw #1 \s_@@_tuple \@@_tuple_chk:w #2 ;
   {
     \exp_after:wN \s_@@_tuple
     \exp_after:wN \@@_tuple_chk:w
     \exp_after:wN {
       \exp:w \exp_end_continue_f:w
-      \@@_tuple_map_loop_o:Nw #1 #2
+      \@@_tuple_map_loop_o:nw {#1} #2
         { \s_@@ \__prg_break: } ;
       \__prg_break_point:
     \exp_after:wN } \exp_after:wN ;
   }
-\cs_new:Npn \@@_tuple_map_loop_o:Nw #1#2#3 ;
+\cs_new:Npn \@@_tuple_map_loop_o:nw #1#2#3 ;
   {
     \use_none:n #2
     #1 #2 #3 ;
     \exp:w \exp_end_continue_f:w
-    \@@_tuple_map_loop_o:Nw #1
+    \@@_tuple_map_loop_o:nw {#1}
   }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[EXP]{\@@_tuple_mapthread_o:Nww, \@@_tuple_mapthread_loop_o:Nw}
+% \begin{macro}[EXP]{\@@_tuple_mapthread_o:nww, \@@_tuple_mapthread_loop_o:nw}
 %   Apply |#1| to pairs of items in the two following tuples and expand once
 %   afterwards.
 %    \begin{macrocode}
-\cs_new:Npn \@@_tuple_mapthread_o:Nww #1
+\cs_new:Npn \@@_tuple_mapthread_o:nww #1
     \s_@@_tuple \@@_tuple_chk:w #2 ;
     \s_@@_tuple \@@_tuple_chk:w #3 ;
   {
@@ -2723,19 +2757,19 @@
     \exp_after:wN \@@_tuple_chk:w
     \exp_after:wN {
       \exp:w \exp_end_continue_f:w
-      \@@_tuple_mapthread_loop_o:Nw #1
+      \@@_tuple_mapthread_loop_o:nw {#1}
         #2 { \s_@@ \__prg_break: } ; @
         #3 { \s_@@ \__prg_break: } ;
       \__prg_break_point:
     \exp_after:wN } \exp_after:wN ;
   }
-\cs_new:Npn \@@_tuple_mapthread_loop_o:Nw #1#2#3 ; #4 @ #5#6 ;
+\cs_new:Npn \@@_tuple_mapthread_loop_o:nw #1#2#3 ; #4 @ #5#6 ;
   {
     \use_none:n #2
     \use_none:n #5
     #1 #2 #3 ; #5 #6 ;
     \exp:w \exp_end_continue_f:w
-    \@@_tuple_mapthread_loop_o:Nw #1 #4 @
+    \@@_tuple_mapthread_loop_o:nw {#1} #4 @
   }
 %    \end{macrocode}
 % \end{macro}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 0524cf6..a50e600 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -3917,6 +3917,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3956,10 +3958,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4172,11 +4174,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 7e89e65..a4bb059 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -3905,6 +3905,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3944,10 +3946,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4160,11 +4162,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index e8399ff..ca999f7 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -3905,6 +3905,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3944,10 +3946,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4160,11 +4162,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 28594c8..c6b90c4 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -3905,6 +3905,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3944,10 +3946,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4160,11 +4162,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 59ccd90..656e6da 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -3915,6 +3915,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3954,10 +3956,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4170,11 +4172,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 0524cf6..a50e600 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -3917,6 +3917,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3956,10 +3958,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4172,11 +4174,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index 7e89e65..a4bb059 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -3905,6 +3905,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3944,10 +3946,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4160,11 +4162,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index e8399ff..ca999f7 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -3905,6 +3905,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3944,10 +3946,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4160,11 +4162,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 28594c8..c6b90c4 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -3905,6 +3905,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3944,10 +3946,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4160,11 +4162,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 59ccd90..656e6da 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -3915,6 +3915,8 @@ Defining \__fp_parse_continue:NwN on line ...
 Defining \__fp_parse_apply_binary:NwNwN on line ...
 Defining \__fp_parse_apply_binary_chk:NN on line ...
 Defining \__fp_parse_apply_binary_error:NNN on line ...
+Defining \__fp_binary_type_o:Nww on line ...
+Defining \__fp_binary_rev_type_o:Nww on line ...
 Defining \__fp_parse_infix_after_operand:NwN on line ...
 Defining \__fp_parse_infix:NN on line ...
 Defining \__fp_parse_infix_check:NNN on line ...
@@ -3954,10 +3956,10 @@ Defining \__fp_parse_function_one_two:nnw on line ..
 Defining \__fp_parse_function_one_two_error_o:w on line ...
 Defining \__fp_parse_function_one_two_aux:nnw on line ...
 Defining \__fp_parse_function_one_two_auxii:nnw on line ...
-Defining \__fp_tuple_map_o:Nw on line ...
-Defining \__fp_tuple_map_loop_o:Nw on line ...
-Defining \__fp_tuple_mapthread_o:Nww on line ...
-Defining \__fp_tuple_mapthread_loop_o:Nw on line ...
+Defining \__fp_tuple_map_o:nw on line ...
+Defining \__fp_tuple_map_loop_o:nw on line ...
+Defining \__fp_tuple_mapthread_o:nww on line ...
+Defining \__fp_tuple_mapthread_loop_o:nw on line ...
 Defining \fp_function:Nw on line ...
 Defining \fp_new_function:Npn on line ...
 Defining \__fp_new_function:NNnnn on line ...
@@ -4170,11 +4172,11 @@ Defining \__fp_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_o:w on line ...
 Defining \__fp_tuple_set_sign_aux_o:Nnw on line ...
 Defining \__fp_tuple_set_sign_aux_o:w on line ...
+Defining \__fp_*_tuple_o:ww on line ...
+Defining \__fp_tuple_*_o:ww on line ...
+Defining \__fp_tuple_/_o:ww on line ...
 Defining \__fp_tuple_+_tuple_o:ww on line ...
 Defining \__fp_tuple_-_tuple_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:ww on line ...
-Defining \__fp_sub_tuple_aux_o:ww on line ...
-Defining \__fp_add_tuple_aux_o:Nww on line ...
 Defining \c__fp_one_fixed_tl on line ...
 Defining \__fp_fixed_continue:wn on line ...
 Defining \__fp_fixed_add_one:wN on line ...
diff --git a/l3kernel/testfiles/m3fp-parse001.tlg b/l3kernel/testfiles/m3fp-parse001.tlg
index 2e74b45..79beaa6 100644
--- a/l3kernel/testfiles/m3fp-parse001.tlg
+++ b/l3kernel/testfiles/m3fp-parse001.tlg
@@ -52,15 +52,6 @@ spelling (e.g., `I\hbox'). Otherwise just continue,
 and I'll forget about whatever was undefined.
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
-                           Invalid operation (1)*(())
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-! Undefined control sequence.
-<argument> \LaTeX3 error: 
                            Missing number before ')'.
 l. ...  }
 The control sequence at the end of the top line
@@ -87,7 +78,7 @@ misspelled it (e.g., `\hobx'), type `I' and the correct
 spelling (e.g., `I\hbox'). Otherwise just continue,
 and I'll forget about whatever was undefined.
 nan
-nan
+()
 ()
 nan
 0.36
diff --git a/l3kernel/testfiles/m3fp-parse002.tlg b/l3kernel/testfiles/m3fp-parse002.tlg
index c6301f7..6e467fb 100644
--- a/l3kernel/testfiles/m3fp-parse002.tlg
+++ b/l3kernel/testfiles/m3fp-parse002.tlg
@@ -42,18 +42,9 @@ nan
 ============================================================
 TEST 4: Weird juxtaposition
 ============================================================
-! Undefined control sequence.
-<argument> \LaTeX3 error: 
-                           Invalid operation (1)*((4, 5))
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
 27
 82575359923.09571
-nan
+(12.56637061435917, 15.70796326794896)
 ============================================================
 ============================================================
 TEST 5: Use of \sin instead of sin
@@ -199,16 +190,7 @@ misspelled it (e.g., `\hobx'), type `I' and the correct
 spelling (e.g., `I\hbox'). Otherwise just continue,
 and I'll forget about whatever was undefined.
 > sin()=nan.
-! Undefined control sequence.
-<argument> \LaTeX3 error: 
-                           Invalid operation (inf)*(())
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-> inf()=nan.
+> inf()=().
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
                            Invalid operation (-0)+(())





More information about the latex3-commits mailing list