c# parse pdf to xml : Get pdf metadata control software utility azure windows winforms visual studio xnumbers-tutorial112-part865

Xnumbers Tutorial 
120 
The factors obtained can be imported into Excel by the apposite buttom. The macro outputs 
each  factor in the format [exponent, factor] 
An active factorization job runs in a minimize 
window. If you like, you can open it at 
normal size and observe what Msieve is 
doing 
The precedent submited jobs remain memorized until they are delete. They can be recalled 
and viewed by the buttom  Batch... of the Number Factorization panel 
The factorization time is usually very fast for numbers up to 50 digits and remains reasonably 
fast for numbers in the range 50 - 75 digits, as shows the following statistical graph 
0.1
1
10
100
1000
0
10
20
30
40
50
60
70
80
Time (sec)
1.2 GHz, 256 
Digits
Factorization function 
Factor(n)   
This function performs the decomposition in prime factors of a given integer number 
Returns an array of two columns: the first column contains the prime factors and the second 
column contains the exponents 
This function is useful for factorizing on-line integer numbers N < 1E14 directly in the 
worksheet. 
It uses the so called "brute force attack" and the Fermat-Lehman method. 
In this example, the given number is 
decomposed in 5 factors 
2277785128000 = 2
6
5
3
23
2
73
2
101 
The #ND symbol indicates the end of factors 
list. To make sure to get all factors you have 
to extend the selection until you see this 
symbol 
Using this function is very simple. Select a range of 2 columns and several rows (for example 7 
rows). The insert the function Factor using the ctrl+shift+enter sequence. 
Get pdf metadata - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
clean pdf metadata; batch pdf metadata
Get pdf metadata - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
add metadata to pdf programmatically; pdf metadata editor online
Xnumbers Tutorial 
121 
Macro - Prime Numbers Generator 
PrimeGenerator   
This macro is useful to generate your own table of prime numbers. The table begins from the 
cell A1 of the active worksheet. 
Prime Test 
This macro perform the probabilistic prime test with the Fermat or Miller-Rabin method. These 
tests are especially adapt for long number. 
Using is very simple. Select the number that you want to test and start the macro from the 
menu  Macros / Numbers / Prime test 
Select the method that you want and press "Test". After few seconds you get the results 
Note that this test is exact for 
detecting composite numbers, 
but it can detect a prime number 
with a finite probability (usually 
very high).  
The numbers satisfying the 
Fermat or Miller-Rabin are called 
"pseudo-prime" 
The probability is correlated to the trials number T with the following approximate formula 
Fermat test 
T
p
= −
1 2
For  T = 100  the probability is about   
31
1 7.810
Miller-Rabin test 
T
p
= −
1 4
For  T = 50  the probability is about   
31
1 7.810
You can also select a list of cells containing several numbers to test. This is useful for finding 
prime in a set of consecutive integers. 
The macro computes 10.000 (default) 
prime numbers for each time. 
The macro can be stop and restart as 
you like 
It always restarts from the last prime 
number written in the worksheet. 
C# TIFF: TIFF Metadata Editor, How to Write & Read TIFF Metadata
TIFFDocument doc = new TIFFDocument(@"c:\demo1.tif"); // Get Xmp metadata for string. TagCollection collection = doc.GetTagCollection(0); // Get Exif metadata.
batch pdf metadata editor; read pdf metadata online
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
' Get PDF document. Dim fileInpath As String = "" Dim doc As PDFDocument = New PDFDocument(fileInpath) ' Get all annotations. ' Get PDF document.
view pdf metadata in explorer; pdf xmp metadata editor
Xnumbers Tutorial 
122 
Example: find the next prime number after 200000000000532100000000  
A prime number must be odd, so let's begin to prepare a sequence of 20 or more odd numbers 
starting from 200000000000532100000001 
The frequency of prime numbers, in this range, is about 5%, so we hope to find a prime number 
in our list. If this does not happen we try with a successive set of numbers, and so on, until a 
prime comes out. 
In this case we have found a probable prime 200000000000532100000003 
You may prove by yourself that it is a true prime 
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
Get PDF document. String fileInpath = @""; PDFDocument doc = new PDFDocument(fileInpath); // Get all annotations. Get PDF document.
add metadata to pdf; batch update pdf metadata
How to C#: Modify Image Metadata (tag)
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel How to C#: Modify Image Metadata (tag). With XImage.Raster, you can get the image tags and modify them rapidly
pdf metadata extract; add metadata to pdf file
Xnumbers Tutorial 
123 
Diophantine Equation  
DiophEqu(a, b, c)   
This function solves the Diophantine linear equation  
x y y Z
ax by y c
=
+
,
where a, b, c , x, y are all integer numbers 
The integer solutions can 
be expressed as 
0, 1, 2...
for 
0
0
= ± ± ±
+ ⋅
=
+ ⋅
=
k
k D
y
y
k D
x
x
y
k
x
k
This function return an (2 x 2) array of four integer values. 
The first row contains a particular solution, while the second row 
contains the integer increments for generating all the solutions.  
If you only want a particular solution [x
0
, y
0
] simply select an array of 2 
adjacent cells. If the equation has no solution the function return "?" 
y
x
D
D
y
x
0
0
Example. Find all the integer solutions of the equation  2x+3y = 6   
As we can see, the function returns one 
solution (-6, 6)  and the increments (3, -2). 
So all the integer solutions of the above 
equation can be obtained from the following 
formulas for any integer value of k 
= −
=− +
k
y
k
x
k
k
6 2
6 3
Often is not so easy to find the solution of a diophantine equation. Let's see the following. 
Long numbers. This function works also with extended numbers. 
Example. Find a solution of the equation  ax+by = c  having the following coefficients 
18760000596690052 13650847757772  64 
Note that the first coefficients has 17 
digits and the second one has 14 
digits. Without multiprecision it would 
be difficult to solve this problem. 
You can enjoy yourself to prove that 
the result returned from the function 
DiophEqu is correct 
VB.NET PDF: Get Started with PDF Library
rotate PDF pages, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET VB.NET PDF: Get Started with .NET PDF Library Using VB.
read pdf metadata java; rename pdf files from metadata
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Scan image to PDF, tiff and various image formats. Get image information, such as its location, zonal information, metadata, and so on.
pdf keywords metadata; remove metadata from pdf online
Xnumbers Tutorial 
124 
Brouncker-Pell Equation  
= PellEqu(d, [n]) 
This function solves the so called Brouncker-Pell quadratic equation on the integer domain 
x y d d N
x d d y
− ⋅ ⋅ =
1    ,  , , ,
2
2
The function returns the n
-th
integer solution (default n = 1) using the continued fraction method. 
As know, this equation has non trivial solutions if d is not a perfect square. 
The function works for low-moderate integer d values but, even with this constraints, 
sometimes this smallest solution is quite small, and sometimes it is huge. Let's see. 
Compute the first 3 integer solutions of the equation  
1
31
2
2
− ⋅ ⋅ =
y
x
As we can see the solutions grow sharply also for very small d. 
Sometime the first solution is huge also with moderate d. In that case is better to arrange the 
solution in vertical cells, as shown in the following examples 
Note that the "smallest" solution of the equation 
1
991
2
2
⋅ =
y
x
has 30 digits ! 
When the solution exceed 250 digits or the time of  200 iterations the functions returns "?". 
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Capture image from whole PDF based on special characteristics. Get image information, such as its location, zonal information, metadata, and so on.
bulk edit pdf metadata; delete metadata from pdf
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
You can easily get pages from a PDF file, and then use these pages to create and output a new PDF file. Pages order will be retained.
preview edit pdf metadata; edit pdf metadata acrobat
Xnumbers Tutorial 
125 
Euler's Totient function  
= Totient(n)  
Returns the number of integer not exceeding and relatively prime to n 
This function is intended only for low-moderate numbers. 
Remember that two numbers n , m are relative prime if, an only if, GCD(n, m) = 1 
With this function is easy to set a table of the totient φ(n) values for 1 ≤ n ≤ 100 
φ(n) 
6
7
8
9
10
2
6
4
6
4
10 
10 
12 
8
16
6
18
8
20 
12 
10 
22 
20 
12
18
12
28
8
30 
30 
16 
20 
16 
24 
12
36
18
24
16
40 
40 
12 
42 
20 
24 
22
46
16
42
20
50 
32 
24 
52 
18 
40 
24
36
28
58
16
60 
60 
30 
36 
32 
48 
20
66
32
44
24
70 
70 
24 
72 
36 
40 
36
60
24
78
32
80 
54 
40 
82 
24 
64 
42
56
40
88
24
90 
72 
44 
60 
46 
72 
32
96
42
60
40
C# PDF insert text Library: insert text into PDF content in C#.net
String inputFilePath = Program.RootPath + "\\" 1.pdf"; PDFDocument doc = new PDFDocument(inputFilePath); // get a text manager from the document object
edit pdf metadata online; change pdf metadata creation date
Xnumbers Tutorial 
126 
Integer relation  
A set of real numbers  [x
1
, x
2
, ... x
n
] , is said to possess an integer relation if there exist a set of  
integers  [a
1
, a
2
, ...a
n
] , not all zero,  such that 
a
1
x
1
+ a
2
x
2
... + an x
n
= 0 
The integer relation algorithm can be used to solve subset sum problems, as well as to 
determine if a given numerical constant is equal to a root of a univariate polynomial with integer 
coefficients; in this case we say the constant to be "rational" suche as "12/51" or "algebraic", 
such as 
2
. On the contrary, if such polynomial does not exist, we say the constant 
"transcendental", such as π. 
Therefore this algorithm can be used for algebraic-transcendental screening of real numbers. 
Because we always have an approximated value of the constant, the found integer relation will 
not exactly zero but very close to it only if we use a sufficient number of digits. 
For example, we find the following 5
th
degree relation  
[a
1
, a
2
, a
3
, a
4,
a
5
]⋅[1, x, x
2
, x
3
,
x
4
]
T
=  a
1
+ a
2
x + a
3
x
2
+ a
4
x
3
+ a
5
x
4
≅  0 
where [a
1
, a
2
, a
3
, a
4,
a
5
] = [-1, 0, -2, 0, 1] , and  x = 1.553773974... 
Of course, a numerical discovery of a relation by this algorithm does not in general constitute a 
proof of this relation; one of the reasons being that the computer operates in finite precision. In 
many cases, however, the relations we first discovered numerically subsequently received 
rigorous mathematical proofs. Moreover, many complicated relations probably would never, 
have been dreamed of without the assistance of the computer. 
Algorithms for finding integer relations include HJLS algorithm, LLL algorithm, PSLQ algorithm. 
All these algorithms requires high-precision arithmetic, but the PSLQ, developed by Ferguson 
and Forcade (1979) and improved by Ferguson and Bailey (1992),  is proved the most efficient 
and stable integer relation algorithm. The Xnumbers VB macro has been developed from the 
PSLQ descripted by Bailey, D. and Plouffe at http://www.cecm.sfu.ca/organics/papers/bailey 
Norm and Bounding. 
The norm of the relation is defined the Euclidean norm of the vector |x| = [x
1
, x
2
, ... x
n
Among the relations satisfinyg the constraint  | ∑ x
i
a
i
| < ε ,  we are clearly interested in those 
relations having small norm, and, if possible, with the smallest n
th
degree.  
The constraint of small norm has been introduced for filtering between relations. 
In fact, if we can easily observe that, if the vector x becames exagerately large, then an integer 
relation will be surely find for any real number. 
|  314159265358979323 −100000000000000000 
π
|  < 10
-16
,  
Of course, the norm of this relation is very high (about 3.2 10
17
) and thus we have to reject it 
PSLQ computes the norm of any examined relation and returns the bound of the coefficients. 
Even if a relation is not found, the resulting bound means that  cannot possibly be the root of a 
polynomial of degree n, with coefficients of size less than the established bound. Even negative 
results of this sort are often of interest. 
Examples 
given a real value x we build the vector [1, x, x
2
, x
3
, ... x
n
] with n in increasing order n = 3, 4, 
5...., we are searching for possible integer relations having small error ε < 1E-14 and small 
norm |x|  
Epprox. value:  3.189207115002720,   Exact value:   
2 2
4
+
Relation:  [14, -32, 24, -8, 1],    Polynomial:  
4
3
2
8
24
32
14
x
x
x
x
+
+
Epprox. value:  2.67413461226797,   Exact value:  
2
2
3
+
Relation:  [4, 24, -12, 4, 6, 0, -1] ,    Polynomial:  
6
4
3
2
6
4
12
24
4
x
x
x
x
x
+
+
Xnumbers Tutorial 
127 
Epprox. value:  2.991971857463750,   Exact value:  
3
2
3
+
Relation:  [-23, -36, 27, -4, -9, 0, 1],   Polynomial:  
6
4
3
2
9
4
27
36
23
x
x
x
x
x
+
+
Epprox. value:  0.809016994374947,   Exact value:  
( 5+1)/2
Relation:  [1, 2, -4] ,   Polynomial:  
2
4
1 2
x
x−
+
Epprox. value:  0.923879532511287,   Exact value:  
( 2 2 2)/4
+
Relation:  [-1, 0, 8, 0, -8],   Polynomial:  
4
2
8
1 8
x
x −
− +
Epprox. value:  0.900968867902419,   Exact value:  
/7)
cos(
π
Relation:  [1, -4, -4, 8],   Polynomial:  
3
2
8
4
1 4
x
x
x
+
Epprox. value:  1.839286755214160,       Exact value:   
Relation: [1, 1, 1, -1],   Polynomial:  
3
2
1
x
x x
+ +
Epprox. value:  0.012345678901235,   Exact value:  1/81 
Relation: [1, -162, 6561],   Polynomial:  
2
6561
162
1
x
x+
2
(1 81 1 )
− x
A very simple trick for testing a relation consists in increasing the degree to n+1; if the algorithm 
still returns the same relation then, with high probabability, the relation is correct. But pay 
attention, because, sometime a numeric value can have two different relations with different 
degree. This means that the given value is the root of two different polynomials. Let's see the 
following example 
Epprox. value:  7.7099759466767,   Exact value:  
5 6
3
+
Relation:  [221, -108, 18, -1],   Polynomial:  
3
2
18
108
221
x
x
x
+
But the same value also returns the following relation of degree 5 
Relation:  [221, 113, -90, 17, -1],   Polynomial:  
4
3
2
17
90
113
221
x
x
x
x
+
+
We can verify that both relations are correct, in this case. 
Higher degree relations 
All the previous examples can be found using PSLQ in standard 64 bit precision. However, 
when we search for higher the Polynomial degree ( n > 6), the multiprecision is required 
Epprox. value:  3.00161461434129452355339436348,   Exact value:  
2
4
3
+
Relation: [ -8, 48, -20, 56, -6, 8, 5, 0, -1],   Polynomial:  -1+104x
2
-18x
4
+8x
6
-x
8
Time:  0.4 sec 
We have seen that for 8
th
degree polynomial we have needed about 30 digits, in this case. 
Generally speaking, the required precision increases with the degree and the norm of the 
coefficients of the polynomial, as reported in the following table 
3
1
9
33
27
19
9
33
27
19
3
3
+
+
+
Xnumbers Tutorial 
128 
Degree 
Digits 
Time (sec)
10 
40 
0.5
15 
80 
4.5
16 
85 
5.4
20 
120 
23.0
25 
170 
81.7
28 
220 
126.1
30 
250 
217.7
Absolute limits. The table can be accessed in two ways: given a polynomial degree we get 
the minimum precision of the number (number of significant digits); on the contrary, given a 
precision of a number (digits) we get the maximum obtainable polynomial degree. 
For example, if we are searching for a polynomial of 15 degree, we must have a number with 
80 digits, at least. If we have have calculate a number with 100 digits we can search for 
polynomials having degree n < 18.  
In the above table and graph we have also reported the time
1
in second of the PSLQ (two-level) 
algorithm. As we can see, the time increases sharply with the degree. The time stays less the 
few seconds for n <16, but requires about 3-4 minutes for  n = 30 and 250 digits (the maximum 
possible for Xnumbers) 
Some other high results are shownin the following list. In these trials, the problem is to recover 
the polynomial of degree n satisfied by α, where α  = a
1/r
± b
1/s
. In 
other words, the input vector x = (1, α, α
2
, α
2
.... α
n-1
), where n = (r s + 1). Here the working 
precision was set to the level required by PSLQ and the input number α was computed with the 
needed precision, as determined by the above table. 
Degree: 12.  Exact value: α  = 3
1/ 6 
+ 2
1/ 2
≅  2.61515051...   (50 digits) 
Relation: [ -25, 0, 552, 0, -60, 0, 166, 0, -60, 0, 12, 0, -1] ,   
Time:  2.8 sec 
Degree: 12.  Exact value: α  = 3
1/ 4 
+ 2
1/ 3
≅  2.57599506...   (50 digits) 
Relation: [ -11, -216, -360, -32, 27, -288, 24, 0, -9, -8, 0, 0, 1],   
Time:  3 sec 
Degree: 15.  Exact value: α  = 3
1/ 5 
+ 2
1/ 3
≅  2.50565198951...   (80 digits) 
Relation:,  [ -59, -360, -540, 80, -1620, 27, -80, -540, 0, 40, -9, 0, -10, 0, 0, 1] 
Time:  5 sec 
Degree: 16.  Exact value: α  = 3
1/ 4 
− 2
1/ 4
≅  0.126866897949771...   (85 digits) 
Relation: [ 1, 0, 0, 0, -3860, 0, 0, 0, -666, 0, 0, 0, -20, 0, 0, 0, 1],   
Time:  5.6 sec 
Degree: 20.  Exact value: α  = 3
1/ 5 
− 2
1/ 4
≅  0.0565238246127...   (120 digits) 
Relation: [ 49, -1080, 3960, -3360, 80, -108, -6120, -7440, -80, 0, 54, -1560, 40, 0, 0, -12, -10, 
0, 0, 0, 1],   
Time:  16.8 sec 
Degree: 20.  Exact value: α  = 3
1/ 5 
+ 2
1/ 4
≅  2.434938054618...   (120 digits) 
Relation: [ 49, -1080, 3960, -3360, 80, -108, -6120, -7440, -80, 0, 54, -1560, 40, 0, 0, -12, -10, 
0, 0, 0, 1],   
Time:  23 sec 
1
Computation on a PC with AMD Athlon, 2GHz, 512 MB Ram 
Xnumbers Tutorial 
129 
It is interesting to note that the two numbers  3
1/ 5 
± 2
1/ 4
gives the same relations. In fact they 
are both roots of the same 20
th
degree polynomial. 
Degree: 25.  Exact value: α  = 3
1/ 5 
+ 2
1/ 5
≅  2.39442929461255233...   (170 digits) 
Relation: [-3125, 0, 0, 0, 0, 21875, 0, 0, 0, 0, -57500, 0, 0, 0, 0, -3500, 0, 0, 0, 0, -25, 0, 0, 0, 0, 
1],   
Time:  81.7 sec 
Degree: 25.  Exact value: α  = 3
1/ 5 
− 2
1/ 5
≅  0.0970325846184823...   (170 digits) 
Relation: [ 1, 0, 0, 0, 0, -116255, 0, 0, 0, 0, -11240, 0, 0, 0, 0, -3760, 0, 0, 0, 0, 5, 0, 0, 0, 0, -1],   
Time:  68.7 sec 
Degree: 28.  Exact value: α  = 3
1/ 7 
− 2
1/ 4
≅  -0.01927630224403418...   (220 digits) 
Relation: [ -47, -2688, -13104, -7560, 448, -79296, 136584, -108, -672, -184128, -25956, 0, 
560, -74592, 54, 0, -280, -4872, 0, 0, 84, -12, 0, 0, -14, 0, 0, 0, 1],   
Time:  126 sec 
Degree: 30.  Exact value: α  = 3
1/ 6 
− 2
1/ 5
≅  0.0522386001789677198...   (250 digits) 
Relation: [ 179, -4860, 30780, -65520, 30240, -192, -405, -98820, -538380, -149520, -240, 0, 
270, -84240, 90360, -160, 0, 0, -90, -7380, -60, 0, 0, 0, 15, -12, 0, 0, 0, 0, -1],   
Time:  218 sec 
Documents you may be interested
Documents you may be interested