From f41f19063b4eeb01ac278d4d84341194ac4497c4 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Mon, 21 Nov 2016 22:24:46 +0000
Subject: xint (21nov16)

git-svn-id: svn://tug.org/texlive/trunk@42550 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/generic/xint/xintfrac.sty | 42 +++++++++++++++----------
 1 file changed, 26 insertions(+), 16 deletions(-)

(limited to 'Master/texmf-dist/tex/generic/xint/xintfrac.sty')

diff --git a/Master/texmf-dist/tex/generic/xint/xintfrac.sty b/Master/texmf-dist/tex/generic/xint/xintfrac.sty
index ab128c57272..4ffec9ded36 100644
--- a/Master/texmf-dist/tex/generic/xint/xintfrac.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintfrac.sty
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2g 2016/03/19
+%% The xint bundle 1.2h 2016/11/20
 %% Copyright (C) 2013-2016 by Jean-Francois Burnol
 %% xintfrac: Expandable operations on fractions
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xintfrac}%
-  [2016/03/19 1.2g Expandable operations on fractions (JFB)]%
+  [2016/11/20 1.2h Expandable operations on fractions (JFB)]%
 \def\XINT_cntSgnFork #1%
 {%
     \ifcase #1\expandafter\xint_secondofthree
@@ -2865,17 +2865,25 @@
    \the\numexpr \xintNum{#3}\expandafter.%
    \the\numexpr \xintNum{#4}.\xint_c_i{#1}{#2[#1]}%
 }%
-\def\XINT_FL_pfac_fork #1#2.#3.%
+\def\XINT_FL_pfac_fork #1#2.#3#4.%
 {%
-    \if-#1\xint_dothis\XINT_FL_pfac_outofrange\fi
-    \ifnum #1#2=#3  \xint_dothis\XINT_FL_pfac_one\fi
-    \ifnum #1#2>#3  \xint_dothis\XINT_FL_pfac_outofrange\fi
-    \ifnum #3>\xint_c_x^viii_mone
-                     \xint_dothis\XINT_FL_pfac_outofrange\fi
-    \xint_orthat \XINT_FL_pfac_increaseP #1#2.#3.%
+    \unless\ifnum #1#2<#3#4 \xint_dothis\XINT_FL_pfac_one\fi
+    \if-#3\xint_dothis\XINT_FL_pfac_neg \fi
+    \if-#1\xint_dothis\XINT_FL_pfac_zero\fi
+    \ifnum #3#4>\xint_c_x^viii_mone\xint_dothis\XINT_FL_pfac_outofrange\fi
+    \xint_orthat \XINT_FL_pfac_increaseP #1#2.#3#4.%
 }%
 \def\XINT_FL_pfac_outofrange #1.#2.#3#4#5{\xintError:OutOfRangePFac #5{0[0]}}%
-\def\XINT_FL_pfac_one #1.#2.#3#4#5{#5{1[0]}}%
+\def\XINT_FL_pfac_one  #1.#2.#3#4#5{#5{1[0]}}%
+\def\XINT_FL_pfac_zero #1.#2.#3#4#5{#5{0[0]}}%
+\def\XINT_FL_pfac_neg -#1.-#2.%
+{%
+    \ifnum #1>\xint_c_x^viii\xint_dothis\XINT_FL_pfac_outofrange\fi
+    \xint_orthat {%
+    \ifodd\numexpr#2-#1\relax\xint_afterfi{\expandafter-\romannumeral`&&@}\fi
+    \expandafter\XINT_FL_pfac_increaseP}%
+    \the\numexpr #2-\xint_c_i\expandafter.\the\numexpr#1-\xint_c_i.%
+}%
 \def\XINT_FL_pfac_increaseP #1.#2.#3#4%
 {%
     \expandafter\XINT_FL_pfac_a
@@ -3033,20 +3041,22 @@
 {%
     \expandafter\XINT_FL_binom_fork \the\numexpr #1-#2.#2.#1.%
 }%
-\def\XINT_FL_binom_fork #1#2.#3#4.#5.%
+\def\XINT_FL_binom_fork #1#2.#3#4.#5#6.%
 {%
-    \if-#1\xint_dothis \XINT_FL_binom_outofrange\fi
-    \if-#3\xint_dothis \XINT_FL_binom_outofrange\fi
+    \if-#5\xint_dothis \XINT_FL_binom_outofrange\fi
+    \if-#1\xint_dothis \XINT_FL_binom_zero\fi
+    \if-#3\xint_dothis \XINT_FL_binom_zero\fi
     \if0#1\xint_dothis \XINT_FL_binom_one\fi
     \if0#3\xint_dothis \XINT_FL_binom_one\fi
-    \ifnum #5>\xint_c_x^viii_mone \xint_dothis\XINT_FL_binom_outofrange\fi
+    \ifnum #5#6>\xint_c_x^viii_mone \xint_dothis\XINT_FL_binom_outofrange\fi
     \ifnum #1#2>#3#4  \xint_dothis\XINT_FL_binom_ab \fi
                       \xint_orthat\XINT_FL_binom_aa
-    #1#2.#3#4.#5.%
+    #1#2.#3#4.#5#6.%
 }%
 \def\XINT_FL_binom_outofrange #1.#2.#3.#4.#5%
        {\xintError:OutOfRangeBinomial #5[#4]{0[0]}}%
-\def\XINT_FL_binom_one #1.#2.#3.#4.#5{#5[#4]{1[0]}}%
+\def\XINT_FL_binom_one  #1.#2.#3.#4.#5{#5[#4]{1[0]}}%
+\def\XINT_FL_binom_zero #1.#2.#3.#4.#5{#5[#4]{0[0]}}%
 \def\XINT_FL_binom_aa  #1.#2.#3.#4.#5%
 {%
     #5[#4]{\xintDiv{\XINT_FL_pfac_increaseP
-- 
cgit v1.2.3

