You can subscribe to this list here.
2001 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}
(20) 
_{Dec}
(17) 

2002 
_{Jan}
(39) 
_{Feb}
(21) 
_{Mar}
(33) 
_{Apr}
(135) 
_{May}
(53) 
_{Jun}
(88) 
_{Jul}
(47) 
_{Aug}
(59) 
_{Sep}
(207) 
_{Oct}
(40) 
_{Nov}
(7) 
_{Dec}
(26) 
2003 
_{Jan}
(49) 
_{Feb}
(39) 
_{Mar}
(117) 
_{Apr}
(50) 
_{May}
(62) 
_{Jun}
(6) 
_{Jul}
(19) 
_{Aug}
(24) 
_{Sep}
(11) 
_{Oct}
(11) 
_{Nov}
(49) 
_{Dec}
(9) 
2004 
_{Jan}
(29) 
_{Feb}
(123) 
_{Mar}
(32) 
_{Apr}
(53) 
_{May}
(52) 
_{Jun}
(19) 
_{Jul}
(33) 
_{Aug}
(10) 
_{Sep}
(76) 
_{Oct}
(86) 
_{Nov}
(171) 
_{Dec}
(163) 
2005 
_{Jan}
(147) 
_{Feb}
(121) 
_{Mar}
(120) 
_{Apr}
(126) 
_{May}
(120) 
_{Jun}
(213) 
_{Jul}
(76) 
_{Aug}
(79) 
_{Sep}
(140) 
_{Oct}
(83) 
_{Nov}
(156) 
_{Dec}
(202) 
2006 
_{Jan}
(181) 
_{Feb}
(171) 
_{Mar}
(157) 
_{Apr}
(98) 
_{May}
(96) 
_{Jun}
(97) 
_{Jul}
(193) 
_{Aug}
(76) 
_{Sep}
(130) 
_{Oct}
(63) 
_{Nov}
(196) 
_{Dec}
(253) 
2007 
_{Jan}
(256) 
_{Feb}
(293) 
_{Mar}
(276) 
_{Apr}
(258) 
_{May}
(181) 
_{Jun}
(91) 
_{Jul}
(108) 
_{Aug}
(69) 
_{Sep}
(107) 
_{Oct}
(179) 
_{Nov}
(137) 
_{Dec}
(121) 
2008 
_{Jan}
(124) 
_{Feb}
(129) 
_{Mar}
(192) 
_{Apr}
(201) 
_{May}
(90) 
_{Jun}
(86) 
_{Jul}
(115) 
_{Aug}
(142) 
_{Sep}
(49) 
_{Oct}
(91) 
_{Nov}
(95) 
_{Dec}
(218) 
2009 
_{Jan}
(230) 
_{Feb}
(149) 
_{Mar}
(118) 
_{Apr}
(72) 
_{May}
(77) 
_{Jun}
(68) 
_{Jul}
(102) 
_{Aug}
(72) 
_{Sep}
(89) 
_{Oct}
(76) 
_{Nov}
(125) 
_{Dec}
(86) 
2010 
_{Jan}
(75) 
_{Feb}
(90) 
_{Mar}
(89) 
_{Apr}
(121) 
_{May}
(111) 
_{Jun}
(66) 
_{Jul}
(75) 
_{Aug}
(66) 
_{Sep}
(66) 
_{Oct}
(166) 
_{Nov}
(121) 
_{Dec}
(73) 
2011 
_{Jan}
(74) 
_{Feb}

_{Mar}

_{Apr}
(14) 
_{May}
(22) 
_{Jun}
(31) 
_{Jul}
(53) 
_{Aug}
(37) 
_{Sep}
(23) 
_{Oct}
(25) 
_{Nov}
(31) 
_{Dec}
(28) 
2012 
_{Jan}
(18) 
_{Feb}
(11) 
_{Mar}
(32) 
_{Apr}
(17) 
_{May}
(48) 
_{Jun}
(37) 
_{Jul}
(23) 
_{Aug}
(54) 
_{Sep}
(15) 
_{Oct}
(11) 
_{Nov}
(19) 
_{Dec}
(22) 
2013 
_{Jan}
(11) 
_{Feb}
(32) 
_{Mar}
(24) 
_{Apr}
(37) 
_{May}
(31) 
_{Jun}
(14) 
_{Jul}
(26) 
_{Aug}
(33) 
_{Sep}
(40) 
_{Oct}
(21) 
_{Nov}
(36) 
_{Dec}
(84) 
2014 
_{Jan}
(23) 
_{Feb}
(20) 
_{Mar}
(27) 
_{Apr}
(24) 
_{May}
(31) 
_{Jun}
(27) 
_{Jul}
(34) 
_{Aug}
(26) 
_{Sep}
(21) 
_{Oct}
(45) 
_{Nov}
(23) 
_{Dec}
(73) 
2015 
_{Jan}
(33) 
_{Feb}
(8) 
_{Mar}
(24) 
_{Apr}
(45) 
_{May}
(27) 
_{Jun}
(19) 
_{Jul}
(21) 
_{Aug}
(51) 
_{Sep}
(43) 
_{Oct}
(29) 
_{Nov}
(61) 
_{Dec}
(86) 
2016 
_{Jan}
(99) 
_{Feb}
(52) 
_{Mar}
(80) 
_{Apr}
(61) 
_{May}
(24) 
_{Jun}
(23) 
_{Jul}
(30) 
_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 



1
(1) 
2
(1) 
3
(1) 
4

5
(1) 
6

7

8
(1) 
9

10
(4) 
11
(2) 
12
(7) 
13

14
(1) 
15

16
(1) 
17

18
(1) 
19
(3) 
20

21
(1) 
22

23

24
(1) 
25

26
(3) 
27
(2) 
28

29

30




From: Dieter Kaiser <crategus@us...>  20111116 22:05:30

This is an automated email from the git hooks/postreceive script. It was generated because a ref change was pushed to the repository containing the project "Maxima, A Computer Algebra System". The branch, master has been updated via ba860dc0b57904a7e7015fbe7139590644585172 (commit) from 657cf51f1b6bf694666c37250f6f5de823e3addc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.  Log  commit ba860dc0b57904a7e7015fbe7139590644585172 Author: crategus <crategus@...> Date: Wed Nov 16 23:03:21 2011 +0100 Reimplementing the algorithm for multiplying the power of an integer with a rational or an integer in timesin. The results have not changed, but the code is more readable, shorter and uses better the known facts of variables. Therefore, the code should be more efficient. Now, the function exponentof is only called with integer arguments from the function timesin. The argument m is always an positive integer and the argument base is guaranteed to be an integer. Therefore, it is possible to simplify the function exponentof and to cut out the tests for other types of arguments. Especially, the call of the higher level and time consuming function ratgreaterp is no longer necessary. No problems with the testsuite and share_testsuite. The testsuite contains a lot of example which already test the modified part of the function timesin, because of earlier work on this algorithm. diff git a/src/simp.lisp b/src/simp.lisp index 8bf5dab..e4f1506 100644  a/src/simp.lisp +++ b/src/simp.lisp @@ 2457,43 +2457,21 @@ (t (go up))) (go cont))) +;; Basically computes log of m base b. Except if m is not a power +;; of b, we return nil. m is a positive integer and base an integer +;; not equal to +/1. (defun exponentof (m base)  ;; Basically computes log of m base b. Except if m is not a power  ;; of b, we return nil.   ;; Give up on the cases we can't handle.  (unless (and (mnump m)  (ratgreaterp m 0)  (integerp base)  (not (eql (abs base) 1)))  (returnfrom exponentof nil))  (cond ((ratgreaterp 1 m)  ;; m < 1, so change the problem to finding the exponent for  ;; 1/m.  (let ((expo (exponentof (inv m) base)))  (when expo  ( expo))))  ((ratnump m)  ;; exponentof doesn't know how to handle maxima rationals,  ;; so make it a Lisp rational.  (exponentof (/ (second m) (third m)) base))  (t  ;; Main case. Just compute base^k until base^k >= m. Then  ;; check if they're equal. If so, we have the exponent.  ;; Otherwise, give up.  (let ((expo 0))  (when (integerp m)  (loop  (multiplevaluebind (q r)  (floor m base)  (cond ((zerop r)  (setf m q)  (incf expo))  (t  (return nil))))))  (if (zerop expo)  nil  expo))))) + ;; Just compute base^k until base^k >= m. Then check if they're equal. + ;; If so, we have the exponent. Otherwise, give up. + (let ((expo 0)) + (loop + (multiplevaluebind (q r) + (floor m base) + (cond ((zerop r) + (setf m q) + (incf expo)) + (t (return nil))))) + (if (zerop expo) nil expo))) (defun timesin (x y w) ; Multiply X^W into Y (prog (fm temp z check u expo) @@ 2550,10 +2528,10 @@ (go const)) ((onep1 w) (cond ((mtimesp (car x))  ;; A base which is a mtimes expression.  ;; Remove the factor from the lists of products. + ;; A base which is a mtimes expression. Remove + ;; the factor from the lists of products. (rplacd fm (cddr fm))  ;; Multiply the factors of the base with + ;; Multiply the factors of the base with ;; the list of all remaining products. (setq rulesw t) (return (muln (nconc y (cdar x)) t))) @@ 2566,59 +2544,46 @@ (or (ratnump (car x)) (and (integerp (car x)) (not (onep (car x))))))  ;; Multiplying a^k * rational.  (let* ((numerator (if (integerp (car x))  (car x)  (second (car x))))  (denom (if (integerp (car x))  1  (third (car x))))  (sgn (signum numerator)))  (setf expo (exponentof (abs numerator) (second (cadr fm))))  (when expo  ;; We have a^m*a^k.  (setq temp (power (second (cadr fm))  (add (third (cadr fm)) expo)))  ;; Set fm to have 1/denom term.  (setq x (mul sgn  (car y)  (div (div (mul sgn numerator)  (power (second (cadr fm))  expo))  denom)))  (setf y (rplaca y 1))  ;; Add in the a^(m+k) term.  (rplacd fm (cddr fm))  (rplacd fm (cons temp (cdr fm)))  (setq temp x  x (list x 1)  w 1  fm y)  (go start))  (setf expo (exponentof (inv denom) (second (cadr fm))))  (when expo  ;; We have a^(m)*a^k.  (setq temp (power (second (cadr fm))  (add (third (cadr fm)) expo)))  ;; Set fm to have the numerator term.  (setq x (mul (car y)  (div numerator  (div denom  (power (second (cadr fm))  ( expo))))))  (setf y (rplaca y 1))  ;; Add in the a^(km) term.  (rplacd fm (cddr fm))  (rplacd fm (cons temp (cdr fm)))  (setq temp x  x (list x 1)  w 1  fm y)  (go start))  ;; Next term in list of products.  (setq fm (cdr fm)) + ;; Multiplying bas^k * num/den + (let ((num (num1 (car x))) + (den (denom1 (car x))) + (bas (second (cadr fm)))) + (cond ((and (integerp bas) + (not (eql 1 (abs bas))) + (setq expo (exponentof (abs num) bas))) + ;; We have bas^m*bas^k = bas^(k+m). + (setq temp (power bas + (add (third (cadr fm)) expo))) + ;; Set fm to have 1/denom term. + (setq x (mul (car y) + (div (div num + (exptrl bas expo)) + den)))) + ((and (integerp bas) + (not (eql 1 (abs bas))) + (setq expo (exponentof den bas))) + (setq expo ( expo)) + ;; We have bas^(m)*bas^k = bas^(km). + (setq temp (power bas + (add (third (cadr fm)) expo))) + ;; Set fm to have the numerator term. + (setq x (mul (car y) + (div num + (div den + (exptrl bas ( expo))))))) + (t + ;; Next term in list of products. + (setq fm (cdr fm)) + (go start))) + ;; Add in the bas^(k+m) term or bas^(km) + (setf y (rplaca y 1)) + (rplacd fm (cddr fm)) + (rplacd fm (cons temp (cdr fm))) + (setq temp x + x (list x 1) + w 1 + fm y) (go start)))  ((and (not (atom (car x))) (eq (caar (car x)) 'mabs) (equal (cadr x) 1) @@ 2667,7 +2632,7 @@ (equal (caddr (cadr fm)) 1) (integerp (cadr x)) (> (cadr x) 1)  (alike1 (cadadr (cadr fm)) (car x)) + (alike1 (cadadr (cadr fm)) (car x)) (not (member ($csign (cadadr (cadr fm))) '($complex imaginary)))) ;; 1/abs(x)*x^n > x^(n2)*abs(x), where n an integer. @@ 2739,51 +2704,37 @@ (not (onep1 (car y))) (or (integerp (car y)) (ratnump (car y))))  ;; Multiplying x^w * rational or integer.  (let* ((numerator (if (integerp (car y))  (car y)  (second (car y))))  (denom (if (integerp (car y))  1  (third (car y)))))  (setf expo (exponentof (abs numerator) (car x)))  (when expo  ;; We have a^m*a^k.  (setq temp (power (car x)  (add (cadr x) expo)))  ;; Set fm to have 1/denom term.  (setq x (div (div numerator  (power (car x) expo))  denom))  (setf y (rplaca y 1))  ;; Add in the a^(m+k) term.  (rplacd fm (cons temp (cdr fm)))  (setq temp x  x (list x 1)  w 1  fm y)  (go start))  (setf expo (exponentof (inv denom) (car x)))  (when expo  ;; We have a^(m)*a^k.  (setq temp (power (car x)  (add (cadr x) expo)))  ;; Set fm to have the numerator term.  (setq x (div numerator  (div denom  (power (car x)  ( expo)))))  (setf y (rplaca y 1))  ;; Add in the a^(km) term.  (rplacd fm (cons temp (cdr fm)))  (setq temp x  x (list x 1)  w 1  fm y)  (go start))  ;; The rational doesn't contain any (simple) powers of  ;; the exponential term. We're done.  (return (cdr (rplacd fm (cons temp (cdr fm))))))) + ;; Multiplying bas^k * num/den. + (let ((num (num1 (car y))) + (den (denom1 (car y))) + (bas (car x))) + (cond ((and (integerp bas) + (not (eql 1 (abs bas))) + (setq expo (exponentof (abs num) bas))) + ;; We have bas^m*bas^k. + (setq temp (power bas (add (cadr x) expo))) + ;; Set fm to have 1/denom term. + (setq x (div (div num (exptrl bas expo)) den))) + ((and (integerp bas) + (not (eql 1 (abs bas))) + (setq expo (exponentof den bas))) + (setq expo ( expo)) + ;; We have bas^(m)*bas^k. + (setq temp (power bas (add (cadr x) expo))) + ;; Set fm to have the numerator term. + (setq x (div num (div den (exptrl bas ( expo)))))) + (t + ;; The rational doesn't contain any (simple) powers of + ;; the exponential term. We're done. + (return (cdr (rplacd fm (cons temp (cdr fm))))))) + ;; Add in the a^(m+k) or a^(km) term. + (setf y (rplaca y 1)) + (rplacd fm (cons temp (cdr fm))) + (setq temp x + x (list x 1) + w 1 + fm y) + (go start))) ((and (maximaconstantp (car x)) (do ((l (cdr fm) (cdr l))) ((null (cdr l)))  Summary of changes: src/simp.lisp  225 ++++++++++++++++++++++ 1 files changed, 88 insertions(+), 137 deletions() hooks/postreceive  Maxima, A Computer Algebra System 