Jump to content

Traditional Abacus and Bead Arithmetic/Roots

From Wikibooks, open books for an open world

Introduction

[edit | edit source]
Cargill Gilston Knott

Obtaining square and cubic roots are the most complex operations studied within Elemental Arithmetic. The eastern abacus is very well adapted to obtaining square roots by a direct and efficient procedure, but unfortunately the same cannot be said with reference to cube roots which, although possible, require a tortuous path full of comings and goings that it is prone to errors.

Cargill Gilston Knott (1856 - 1922), one of the fathers of modern seismology, was a Scottish physicist and mathematician who served nine years as a professor of mathematics, acoustics and electromagnetism at the Imperial University of Tokyo; after which he was awarded the Order of the Rising Sun by Emperor Meiji in 1891. During his stay in Japan he came into contact with the Japanese abacus which he studied in depth and without a doubt he used professionally in his own work as a teacher and researcher. The result of this study was a famous 55 pages article[1] written in 1885 about it, which for a long time has been the best informed account in English, and obligatory reference, on the history and foundations of soroban. The next two chapters in this book develop and expand on Knott's vision of the traditional methods of obtaining square and cube roots, the vision of a western scientist and mathematician, offering both a theoretical and practical approach illustrated with several examples.

Chapters

[edit | edit source]

This part of the book consists of the following chapters:

Checking your exercises

[edit | edit source]

Obtaining square and cubic roots with the abacus can be a somewhat long process and during the learning phase it is interesting to have a tool that allows us to control whether we are doing it correctly.

Square root

[edit | edit source]

For square roots you can try the excellent Murakami's Square root tutor with Kijoho, a JavaScript application that you can run directly in your browser or download to your computer from its GitHub repository. You just have to enter the root in the small input box on the left and repeatedly press the "next" button on the screen to see the development of the process step by step.

Cube root

[edit | edit source]

File knott.bc

[edit | edit source]

And mainly for cube roots, the following BC code may help, copy and paste it to a text file and call it knott.bc:

/*
   Functions to help to learn/verify square and cube roots a la Knott
   with the abacus, soroban, suanpan.

   See: https://jccabacus.blogspot.com/2021/06/roots-la-knott.html
   as a reference.

   Jesús Cabrera, June 2021
   CC0 1.0 Universal (CC0 1.0) Public Domain Dedication

   Use at your oun risk!
*/

define int(x) 
{

# Integer part of x

    auto os,r
    os=scale; scale=0
    r=x/1
    scale= os
    return (r)
}

define cbrt(x)
{

# Cube root of x

    return (e(l(x)/3))
}

define knott2(r0, y0, alpha)
{

/*
    Square root following Cargill G. Knott steps

    See example of use in file sr200703.bc
        use: $ sr200703.bc |bc -l knott.bc
*/
    auto so, div
    
    so = scale; /* Store old scale value */
    scale = 1

    a = 10*y0
    div = 100*r0 + alpha/2
    print "New dividend: ",div/1,"\n"
    b = int(div/(a))
    tf = div -b*a -b^2/2
    if (tf<0){
        b=b-1;print "Revising down, b = ",b, "\n"
        tf = div -b*a -b^2/2
    }
    print "New root: ", a+b,", New half-remainder: ", tf/1
    print "\n==================\n\n"
    scale = so; /* restore old scale value */

    return
}


define knott3(r0, y0, alpha)
{

/*
    Cube root following Cargill G. Knott steps

    See example of use in file cr488931400152.bc
        use: $ cat cr488931400152.bc |bc -l knott.bc

*/
    auto so, div, ta, tb, tc, td, te
    
    so = scale; /* Store old scale value */
    scale = 0

    a = 10*y0
    div = 1000*r0 + alpha
    print "New dividend: ",div,"\n\n"

    ta = div/y0; rem1 = div % y0
    print "a) /a:   ", ta, "   rem1: ", rem1, "\n"
    tb = (10*ta)/3; rem2 = (10*ta) % 3
    print "b) /3:   ", tb, "   rem2: ", rem2, "\n"
    b = tb/(100*a)
    print "     b = ",b,"\n"
    tc = tb - b*(a+b)*100
    print "d)   :   ",tc,"\n"
    b = tb/(100*(a+b))
    print "     b = ",b,"\n"
    tc = tb - b*(a+b)*100
    print "d)   :   ",tc,"\n"
    if(b==10){ 
    /* Trick to avoid some problems */
        b = 9
        print "b: ",b,"\n"
        tc = tb - b*(a+b)*100
        print "d) tc:   ",tc,"\n"
    }
    td = tc*3 +rem2
    print "e) *3:   ",td,"\n"
    te = (td/10)*y0 +rem1
    print "f) *a:   ",te,"\n"
    tf = te - b^3
    print "g) -b^3: ",tf,"\n"
    print "\nNew root: ",(a+b)," New remainder: ",tf,"\n\n"
    print "==================\n\n"
    scale = so; /* restore old scale value */

    return
}

File: sr200703.bc

[edit | edit source]
/* 
    Example: square root of 200703 
    
        Use:
        $ cat sr200703.bc |bc -l knott.bc
    or
        $ bc -l knott.bc < sr200703.bc
*/

print "\nSquare root of ", 200703, " = ", sqrt(200703), "\n\n"

/* 
    Decompose in pairs of digits (will be alpha): 20, 07, 03 


    Initialize (first step)
*/
alpha = 20
    b = int(sqrt(alpha))
    r0 = alpha - b^2
    a = 0
    tf = r0/2
    print "First root: ", b, ", First half-remainder: ", tf, "\n"
    print "==================\n\n"

/*  
    Main:
        Repeat for each pair of digits (alpha)...
*/

alpha =07
    mute=knott2(tf, a+b, alpha)
alpha =03
    mute=knott2(tf, a+b, alpha)
/*
    For additional digits continue with alpha = 00
*/
alpha =00
    mute=knott2(tf, a+b, alpha)
alpha =00
    mute=knott2(tf, a+b, alpha)
alpha =00
    mute=knott2(tf, a+b, alpha)
alpha =00
    mute=knott2(tf, a+b, alpha)

Output:

Square root of 200703 = 447.99888392718122931160

First root: 4, First half-remainder: 2.00000000000000000000
==================

New dividend: 203.5
Revising down, b = 4
New root: 44, New half-remainder: 35.5
==================

New dividend: 3551.5
Revising down, b = 7
New root: 447, New half-remainder: 447.0
==================

New dividend: 44700.0
Revising down, b = 9
New root: 4479, New half-remainder: 4429.5
==================

New dividend: 442950.0
New root: 44799, New half-remainder: 39799.5
==================

New dividend: 3979950.0
New root: 447998, New half-remainder: 395998.0
==================

New dividend: 39599800.0
New root: 4479988, New half-remainder: 3759928.0
==================

File cr488931400152.bc

[edit | edit source]
/*
    Example: cube root of 488931400152
    
    Use:
        $ cat cr488931400152.bc |bc -l knott.bc
    or
        $ bc -l knott.bc < cr488931400152.bc
*/

print "\nCube root of ", 488931400152, " = ", cbrt(488931400152), "\n\n"

/*
    Decompose in triplets (will be alpha): #   488, 931, 400, 152 

    Initialize (first step)
*/

alpha = 488
    b = int(cbrt(alpha))
    r0 = alpha - b^3
    a = 0
    tf = r0
    print "First root: ", b, ", First remainder: ", r0, "\n"
    print "==================\n\n"

/*
    Main: 
        Repeat for each triplet (alpha)...
*/

alpha = 931
    mute = knott3(tf, a+b, alpha)
alpha = 400
    mute = knott3(tf, a+b, alpha)
alpha = 152
    mute = knott3(tf, a+b, alpha)

/*
    For additional digits continue with alpha = 000
*/

Output

Cube root of 488931400152 = 7877.99999999999999999871

First root: 7, First remainder: 145
==================

New dividend: 145931

a) /a:   20847   rem1: 2
b) /3:   69490   rem2: 0
     b = 9
d)   :   -1610
     b = 8
d)   :   7090
e) *3:   21270
f) *a:   14891
g) -b^3: 14379

New root: 78 New remainder: 14379

==================

New dividend: 14379400

a) /a:   184351   rem1: 22
b) /3:   614503   rem2: 1
     b = 7
d)   :   63603
     b = 7
d)   :   63603
e) *3:   190810
f) *a:   1488340
g) -b^3: 1487997

New root: 787 New remainder: 1487997

==================

New dividend: 1487997152

a) /a:   1890720   rem1: 512
b) /3:   6302400   rem2: 0
     b = 8
d)   :   0
     b = 8
d)   :   0
e) *3:   0
f) *a:   512
g) -b^3: 0

New root: 7878 New remainder: 0

==================

References

[edit | edit source]
  1. Knott, Cargill G. (1886), "The Abacus, in its Historic and Scientific Aspects", Transactions of the Asiatic Society of Japan, 14: 18–73