added libtommath-0.20
This commit is contained in:
		
							parent
							
								
									ef490f30f6
								
							
						
					
					
						commit
						0fe7a2d4ff
					
				
							
								
								
									
										2
									
								
								bn.tex
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								bn.tex
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| \documentclass[]{article} | ||||
| \begin{document} | ||||
| 
 | ||||
| \title{LibTomMath v0.19 \\ A Free Multiple Precision Integer Library \\ http://math.libtomcrypt.org } | ||||
| \title{LibTomMath v0.20 \\ A Free Multiple Precision Integer Library \\ http://math.libtomcrypt.org } | ||||
| \author{Tom St Denis \\ tomstdenis@iahu.ca} | ||||
| \maketitle | ||||
| \newpage | ||||
|  | ||||
| @ -80,7 +80,6 @@ mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) | ||||
|      if (((P->used * 2 + 1) < MP_WARRAY) && | ||||
|           P->used < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { | ||||
|         redux = fast_mp_montgomery_reduce; | ||||
| 
 | ||||
|      } else { | ||||
|         /* use slower baselien method */ | ||||
|         redux = mp_montgomery_reduce; | ||||
|  | ||||
| @ -1,3 +1,7 @@ | ||||
| June 8th, 2003 | ||||
| v0.20  -- Removed the book from the package.  Added the TDCAL license document.   | ||||
|        -- This release is officially pure-bred TDCAL again [last officially TDCAL based release was v0.16] | ||||
| 
 | ||||
| June 6th, 2003 | ||||
| v0.19  -- Fixed a bug in mp_montgomery_reduce() which was introduced when I tweaked mp_rshd() in the previous release. | ||||
|           Essentially the digits were not trimmed before the compare which cause a subtraction to occur all the time. | ||||
|  | ||||
| @ -1,2 +1 @@ | ||||
| 256-bits (k = 36113) = 115792089237316195423570985008687907853269984665640564039457584007913129603823 | ||||
| 512-bits (k = 38117) = 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006045979 | ||||
| 259-bits (k = 17745) = 926336713898529563388567880069503262826159877325124512315660672063305037101743 | ||||
|  | ||||
| @ -7,7 +7,7 @@ int sizes[] = {256, 512, 768, 1024, 1536, 2048, 3072, 4096}; | ||||
| int main(void) | ||||
| { | ||||
|    char buf[2000]; | ||||
|    int x, y, t; | ||||
|    int x, y; | ||||
|    mp_int q, p; | ||||
|    FILE *out; | ||||
|    clock_t t1; | ||||
|  | ||||
							
								
								
									
										5
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								makefile
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | ||||
| CFLAGS  +=  -I./ -Wall -W -Wshadow -O3 -fomit-frame-pointer -funroll-loops | ||||
| 
 | ||||
| VERSION=0.19 | ||||
| VERSION=0.20 | ||||
| 
 | ||||
| default: libtommath.a | ||||
| 
 | ||||
| @ -103,5 +103,6 @@ clean: | ||||
| zipup: clean manual poster | ||||
| 	perl gen.pl ; mv mpi.c pre_gen/ ; \
 | ||||
| 	cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \
 | ||||
| 	cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; tar -c libtommath-$(VERSION)/* > ltm-$(VERSION).tar ; \
 | ||||
| 	cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; cp tdcal.pdf ./libtommath-$(VERSION)/ ; cd ./libtommath-$(VERSION) ; rm -f tommath.src tommath.tex tommath.out ; cd pics ; rm -f * ; cd .. ; cd .. ; ls ; \
 | ||||
| 	tar -c libtommath-$(VERSION)/* > ltm-$(VERSION).tar ; \
 | ||||
| 	bzip2 -9vv ltm-$(VERSION).tar ; zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -1,23 +0,0 @@ | ||||
| # makes the images... yeah
 | ||||
| 
 | ||||
| default:  pses | ||||
| 
 | ||||
| 
 | ||||
| sliding_window.ps: sliding_window.tif | ||||
| 	tiff2ps -c -e sliding_window.tif > sliding_window.ps | ||||
| 	 | ||||
| expt_state.ps: expt_state.tif | ||||
| 	tiff2ps -c -e expt_state.tif > expt_state.ps | ||||
| 
 | ||||
| sliding_window.pdf: sliding_window.ps | ||||
| 	epstopdf sliding_window.ps | ||||
| 	 | ||||
| expt_state.pdf: expt_state.ps | ||||
| 	epstopdf expt_state.ps | ||||
| 
 | ||||
| pses: sliding_window.ps expt_state.ps | ||||
| pdfes: sliding_window.pdf expt_state.pdf | ||||
| 
 | ||||
| clean: | ||||
| 	rm -rf *.ps *.pdf .xvpics | ||||
|     | ||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								poster.pdf
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								poster.pdf
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -2155,7 +2155,6 @@ mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) | ||||
|      if (((P->used * 2 + 1) < MP_WARRAY) && | ||||
|           P->used < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { | ||||
|         redux = fast_mp_montgomery_reduce; | ||||
| 
 | ||||
|      } else { | ||||
|         /* use slower baselien method */ | ||||
|         redux = mp_montgomery_reduce; | ||||
|  | ||||
							
								
								
									
										143
									
								
								tommath.out
									
									
									
									
									
								
							
							
						
						
									
										143
									
								
								tommath.out
									
									
									
									
									
								
							| @ -1,143 +0,0 @@ | ||||
| \BOOKMARK [0][-]{chapter.1}{Introduction}{} | ||||
| \BOOKMARK [1][-]{section.1.1}{Multiple Precision Arithmetic}{chapter.1} | ||||
| \BOOKMARK [2][-]{subsection.1.1.1}{The Need for Multiple Precision Arithmetic}{section.1.1} | ||||
| \BOOKMARK [2][-]{subsection.1.1.2}{Multiple Precision Arithmetic}{section.1.1} | ||||
| \BOOKMARK [2][-]{subsection.1.1.3}{Benefits of Multiple Precision Arithmetic}{section.1.1} | ||||
| \BOOKMARK [2][-]{subsection.1.1.4}{Basis of Operations}{section.1.1} | ||||
| \BOOKMARK [1][-]{section.1.2}{Purpose of This Text}{chapter.1} | ||||
| \BOOKMARK [1][-]{section.1.3}{Discussion and Notation}{chapter.1} | ||||
| \BOOKMARK [2][-]{subsection.1.3.1}{Notation}{section.1.3} | ||||
| \BOOKMARK [2][-]{subsection.1.3.2}{Work Effort}{section.1.3} | ||||
| \BOOKMARK [1][-]{section.1.4}{Exercises}{chapter.1} | ||||
| \BOOKMARK [0][-]{chapter.2}{Introduction to LibTomMath}{} | ||||
| \BOOKMARK [1][-]{section.2.1}{What is LibTomMath?}{chapter.2} | ||||
| \BOOKMARK [1][-]{section.2.2}{Goals of LibTomMath}{chapter.2} | ||||
| \BOOKMARK [1][-]{section.2.3}{Choice of LibTomMath}{chapter.2} | ||||
| \BOOKMARK [2][-]{subsection.2.3.1}{Code Base}{section.2.3} | ||||
| \BOOKMARK [2][-]{subsection.2.3.2}{API Simplicity}{section.2.3} | ||||
| \BOOKMARK [2][-]{subsection.2.3.3}{Optimizations}{section.2.3} | ||||
| \BOOKMARK [2][-]{subsection.2.3.4}{Portability and Stability}{section.2.3} | ||||
| \BOOKMARK [2][-]{subsection.2.3.5}{Choice}{section.2.3} | ||||
| \BOOKMARK [0][-]{chapter.3}{Getting Started}{} | ||||
| \BOOKMARK [1][-]{section.3.1}{Library Basics}{chapter.3} | ||||
| \BOOKMARK [1][-]{section.3.2}{What is a Multiple Precision Integer?}{chapter.3} | ||||
| \BOOKMARK [2][-]{subsection.3.2.1}{The mp\137int structure}{section.3.2} | ||||
| \BOOKMARK [1][-]{section.3.3}{Argument Passing}{chapter.3} | ||||
| \BOOKMARK [1][-]{section.3.4}{Return Values}{chapter.3} | ||||
| \BOOKMARK [1][-]{section.3.5}{Initialization and Clearing}{chapter.3} | ||||
| \BOOKMARK [2][-]{subsection.3.5.1}{Initializing an mp\137int}{section.3.5} | ||||
| \BOOKMARK [2][-]{subsection.3.5.2}{Clearing an mp\137int}{section.3.5} | ||||
| \BOOKMARK [1][-]{section.3.6}{Other Initialization Routines}{chapter.3} | ||||
| \BOOKMARK [2][-]{subsection.3.6.1}{Initializing Variable Sized mp\137int Structures}{section.3.6} | ||||
| \BOOKMARK [2][-]{subsection.3.6.2}{Creating a Clone}{section.3.6} | ||||
| \BOOKMARK [2][-]{subsection.3.6.3}{Multiple Integer Initializations And Clearings}{section.3.6} | ||||
| \BOOKMARK [1][-]{section.3.7}{Maintenance}{chapter.3} | ||||
| \BOOKMARK [2][-]{subsection.3.7.1}{Augmenting Integer Precision}{section.3.7} | ||||
| \BOOKMARK [2][-]{subsection.3.7.2}{Clamping Excess Digits}{section.3.7} | ||||
| \BOOKMARK [0][-]{chapter.4}{Basic Operations}{} | ||||
| \BOOKMARK [1][-]{section.4.1}{Copying an Integer}{chapter.4} | ||||
| \BOOKMARK [1][-]{section.4.2}{Zeroing an Integer}{chapter.4} | ||||
| \BOOKMARK [1][-]{section.4.3}{Sign Manipulation}{chapter.4} | ||||
| \BOOKMARK [2][-]{subsection.4.3.1}{Absolute Value}{section.4.3} | ||||
| \BOOKMARK [2][-]{subsection.4.3.2}{Integer Negation}{section.4.3} | ||||
| \BOOKMARK [1][-]{section.4.4}{Small Constants}{chapter.4} | ||||
| \BOOKMARK [2][-]{subsection.4.4.1}{Setting Small Constants}{section.4.4} | ||||
| \BOOKMARK [2][-]{subsection.4.4.2}{Setting Large Constants}{section.4.4} | ||||
| \BOOKMARK [1][-]{section.4.5}{Comparisons}{chapter.4} | ||||
| \BOOKMARK [2][-]{subsection.4.5.1}{Unsigned Comparisions}{section.4.5} | ||||
| \BOOKMARK [2][-]{subsection.4.5.2}{Signed Comparisons}{section.4.5} | ||||
| \BOOKMARK [0][-]{chapter.5}{Basic Arithmetic}{} | ||||
| \BOOKMARK [1][-]{section.5.1}{Building Blocks}{chapter.5} | ||||
| \BOOKMARK [1][-]{section.5.2}{Addition and Subtraction}{chapter.5} | ||||
| \BOOKMARK [2][-]{subsection.5.2.1}{Low Level Addition}{section.5.2} | ||||
| \BOOKMARK [2][-]{subsection.5.2.2}{Low Level Subtraction}{section.5.2} | ||||
| \BOOKMARK [2][-]{subsection.5.2.3}{High Level Addition}{section.5.2} | ||||
| \BOOKMARK [2][-]{subsection.5.2.4}{High Level Subtraction}{section.5.2} | ||||
| \BOOKMARK [1][-]{section.5.3}{Bit and Digit Shifting}{chapter.5} | ||||
| \BOOKMARK [2][-]{subsection.5.3.1}{Multiplication by Two}{section.5.3} | ||||
| \BOOKMARK [2][-]{subsection.5.3.2}{Division by Two}{section.5.3} | ||||
| \BOOKMARK [1][-]{section.5.4}{Polynomial Basis Operations}{chapter.5} | ||||
| \BOOKMARK [2][-]{subsection.5.4.1}{Multiplication by x}{section.5.4} | ||||
| \BOOKMARK [2][-]{subsection.5.4.2}{Division by x}{section.5.4} | ||||
| \BOOKMARK [1][-]{section.5.5}{Powers of Two}{chapter.5} | ||||
| \BOOKMARK [2][-]{subsection.5.5.1}{Multiplication by Power of Two}{section.5.5} | ||||
| \BOOKMARK [2][-]{subsection.5.5.2}{Division by Power of Two}{section.5.5} | ||||
| \BOOKMARK [2][-]{subsection.5.5.3}{Remainder of Division by Power of Two}{section.5.5} | ||||
| \BOOKMARK [0][-]{chapter.6}{Multiplication and Squaring}{} | ||||
| \BOOKMARK [1][-]{section.6.1}{The Multipliers}{chapter.6} | ||||
| \BOOKMARK [1][-]{section.6.2}{Multiplication}{chapter.6} | ||||
| \BOOKMARK [2][-]{subsection.6.2.1}{The Baseline Multiplication}{section.6.2} | ||||
| \BOOKMARK [2][-]{subsection.6.2.2}{Faster Multiplication by the ``Comba'' Method}{section.6.2} | ||||
| \BOOKMARK [2][-]{subsection.6.2.3}{Polynomial Basis Multiplication}{section.6.2} | ||||
| \BOOKMARK [2][-]{subsection.6.2.4}{Karatsuba Multiplication}{section.6.2} | ||||
| \BOOKMARK [2][-]{subsection.6.2.5}{Toom-Cook 3-Way Multiplication}{section.6.2} | ||||
| \BOOKMARK [2][-]{subsection.6.2.6}{Signed Multiplication}{section.6.2} | ||||
| \BOOKMARK [1][-]{section.6.3}{Squaring}{chapter.6} | ||||
| \BOOKMARK [2][-]{subsection.6.3.1}{The Baseline Squaring Algorithm}{section.6.3} | ||||
| \BOOKMARK [2][-]{subsection.6.3.2}{Faster Squaring by the ``Comba'' Method}{section.6.3} | ||||
| \BOOKMARK [2][-]{subsection.6.3.3}{Polynomial Basis Squaring}{section.6.3} | ||||
| \BOOKMARK [2][-]{subsection.6.3.4}{Karatsuba Squaring}{section.6.3} | ||||
| \BOOKMARK [2][-]{subsection.6.3.5}{Toom-Cook Squaring}{section.6.3} | ||||
| \BOOKMARK [2][-]{subsection.6.3.6}{High Level Squaring}{section.6.3} | ||||
| \BOOKMARK [0][-]{chapter.7}{Modular Reduction}{} | ||||
| \BOOKMARK [1][-]{section.7.1}{Basics of Modular Reduction}{chapter.7} | ||||
| \BOOKMARK [1][-]{section.7.2}{The Barrett Reduction}{chapter.7} | ||||
| \BOOKMARK [2][-]{subsection.7.2.1}{Fixed Point Arithmetic}{section.7.2} | ||||
| \BOOKMARK [2][-]{subsection.7.2.2}{Choosing a Radix Point}{section.7.2} | ||||
| \BOOKMARK [2][-]{subsection.7.2.3}{Trimming the Quotient}{section.7.2} | ||||
| \BOOKMARK [2][-]{subsection.7.2.4}{Trimming the Residue}{section.7.2} | ||||
| \BOOKMARK [2][-]{subsection.7.2.5}{The Barrett Algorithm}{section.7.2} | ||||
| \BOOKMARK [2][-]{subsection.7.2.6}{The Barrett Setup Algorithm}{section.7.2} | ||||
| \BOOKMARK [1][-]{section.7.3}{The Montgomery Reduction}{chapter.7} | ||||
| \BOOKMARK [2][-]{subsection.7.3.1}{Digit Based Montgomery Reduction}{section.7.3} | ||||
| \BOOKMARK [2][-]{subsection.7.3.2}{Baseline Montgomery Reduction}{section.7.3} | ||||
| \BOOKMARK [2][-]{subsection.7.3.3}{Faster ``Comba'' Montgomery Reduction}{section.7.3} | ||||
| \BOOKMARK [2][-]{subsection.7.3.4}{Montgomery Setup}{section.7.3} | ||||
| \BOOKMARK [1][-]{section.7.4}{The Diminished Radix Algorithm}{chapter.7} | ||||
| \BOOKMARK [2][-]{subsection.7.4.1}{Choice of Moduli}{section.7.4} | ||||
| \BOOKMARK [2][-]{subsection.7.4.2}{Choice of k}{section.7.4} | ||||
| \BOOKMARK [2][-]{subsection.7.4.3}{Restricted Diminished Radix Reduction}{section.7.4} | ||||
| \BOOKMARK [2][-]{subsection.7.4.4}{Unrestricted Diminished Radix Reduction}{section.7.4} | ||||
| \BOOKMARK [1][-]{section.7.5}{Algorithm Comparison}{chapter.7} | ||||
| \BOOKMARK [0][-]{chapter.8}{Exponentiation}{} | ||||
| \BOOKMARK [1][-]{section.8.1}{Exponentiation Basics}{chapter.8} | ||||
| \BOOKMARK [2][-]{subsection.8.1.1}{Single Digit Exponentiation}{section.8.1} | ||||
| \BOOKMARK [1][-]{section.8.2}{k-ary Exponentiation}{chapter.8} | ||||
| \BOOKMARK [2][-]{subsection.8.2.1}{Optimal Values of k}{section.8.2} | ||||
| \BOOKMARK [2][-]{subsection.8.2.2}{Sliding-Window Exponentiation}{section.8.2} | ||||
| \BOOKMARK [1][-]{section.8.3}{Modular Exponentiation}{chapter.8} | ||||
| \BOOKMARK [2][-]{subsection.8.3.1}{Barrett Modular Exponentiation}{section.8.3} | ||||
| \BOOKMARK [1][-]{section.8.4}{Quick Power of Two}{chapter.8} | ||||
| \BOOKMARK [0][-]{chapter.9}{Higher Level Algorithms}{} | ||||
| \BOOKMARK [1][-]{section.9.1}{Integer Division with Remainder}{chapter.9} | ||||
| \BOOKMARK [1][-]{section.9.2}{Single Digit Helpers}{chapter.9} | ||||
| \BOOKMARK [2][-]{subsection.9.2.1}{Single Digit Addition}{section.9.2} | ||||
| \BOOKMARK [2][-]{subsection.9.2.2}{Single Digit Subtraction}{section.9.2} | ||||
| \BOOKMARK [2][-]{subsection.9.2.3}{Single Digit Multiplication}{section.9.2} | ||||
| \BOOKMARK [2][-]{subsection.9.2.4}{Single Digit Division}{section.9.2} | ||||
| \BOOKMARK [2][-]{subsection.9.2.5}{Single Digit Modulo}{section.9.2} | ||||
| \BOOKMARK [2][-]{subsection.9.2.6}{Single Digit Root Extraction}{section.9.2} | ||||
| \BOOKMARK [1][-]{section.9.3}{Random Number Generation}{chapter.9} | ||||
| \BOOKMARK [1][-]{section.9.4}{Formatted Output}{chapter.9} | ||||
| \BOOKMARK [2][-]{subsection.9.4.1}{Getting The Output Size}{section.9.4} | ||||
| \BOOKMARK [2][-]{subsection.9.4.2}{Generating Radix-n Output}{section.9.4} | ||||
| \BOOKMARK [2][-]{subsection.9.4.3}{Reading Radix-n Input}{section.9.4} | ||||
| \BOOKMARK [1][-]{section.9.5}{Unformatted Output}{chapter.9} | ||||
| \BOOKMARK [2][-]{subsection.9.5.1}{Getting The Output Size}{section.9.5} | ||||
| \BOOKMARK [2][-]{subsection.9.5.2}{Generating Output}{section.9.5} | ||||
| \BOOKMARK [2][-]{subsection.9.5.3}{Reading Input}{section.9.5} | ||||
| \BOOKMARK [0][-]{chapter.10}{Number Theoretic Algorithms}{} | ||||
| \BOOKMARK [1][-]{section.10.1}{Greatest Common Divisor}{chapter.10} | ||||
| \BOOKMARK [1][-]{section.10.2}{Least Common Multiple}{chapter.10} | ||||
| \BOOKMARK [1][-]{section.10.3}{Jacobi Symbol Computation}{chapter.10} | ||||
| \BOOKMARK [1][-]{section.10.4}{Modular Inverse}{chapter.10} | ||||
| \BOOKMARK [2][-]{subsection.10.4.1}{General Case}{section.10.4} | ||||
| \BOOKMARK [2][-]{subsection.10.4.2}{Odd Moduli}{section.10.4} | ||||
| \BOOKMARK [1][-]{section.10.5}{Primality Tests}{chapter.10} | ||||
| \BOOKMARK [2][-]{subsection.10.5.1}{Trial Division}{section.10.5} | ||||
| \BOOKMARK [2][-]{subsection.10.5.2}{The Fermat Test}{section.10.5} | ||||
| \BOOKMARK [2][-]{subsection.10.5.3}{The Miller-Rabin Test}{section.10.5} | ||||
| \BOOKMARK [2][-]{subsection.10.5.4}{Primality Test in a Bottle}{section.10.5} | ||||
| \BOOKMARK [2][-]{subsection.10.5.5}{The Next Prime}{section.10.5} | ||||
| \BOOKMARK [1][-]{section.10.6}{Root Extraction}{chapter.10} | ||||
| \BOOKMARK [0][-]{appendix*.16}{Appendix}{} | ||||
							
								
								
									
										4675
									
								
								tommath.src
									
									
									
									
									
								
							
							
						
						
									
										4675
									
								
								tommath.src
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										8141
									
								
								tommath.tex
									
									
									
									
									
								
							
							
						
						
									
										8141
									
								
								tommath.tex
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user