You are on page 1of 29


(**Scientific Calculator**)

Submitted in the partial fulfillment of the Degree of Bachelor of Technology


Computer Science and Engineering




I duly acknowledge the contribution of Ms.Sukhdilpreet Kaur for invaluable help. ACKNOWLEDGMENT First and the foremost I would like to thank to my almighty for giving me courage to a word of thanks to my teacher. I would also thanks to all my friends for forwarding their suggestions to make necessary modifications.Sukhdilpreet Kaur. 3 . Coding scientific calculator is an uphill task and would have not been possible without proper and timely assistance of Ms. I would also like to thank my family members for their whole hearted support and cooperation. friends and other sources that gave an unending support and helped me in numerous ways from the first stage of my term assignment conceived.

Sukhdilpreet Kaur for her able guidance in my term assignment. Future scope of project 4 . Introduction 2. TABLE OF CONTENTS 1. Basic function 3. System requirements 4. Description ii. Testing 7. System Design 5.Special thanks to Ms. Proposed system i. Source code 6.

INTRODUCTION Scientific Calculator The calculator was written by Rolf Howarth in early 1996. The calculator is written in JavaScript and you are welcome to view the JavaScript source (visible within the HTML page) for personal educational purposes as long as you recognize that it is copyrighted and not in the public domain. A fully featured scientific calculator with proper operator precedence is implemented. binary and ASCII display. hex. bitwise logical operators. 12 levels of parentheses. including trig functions and logarithms. 5 . All enquiries regarding licensing the calculator should be directed to Hummingbird Ltd. logs to base 2 (a handy function for information entropists!). octal. factorials. This calculator is now available as part of Hummingbird's Enterprise Information Portal.

Subtraction The subtraction (minus function) is used by clicking on the "-" button or using the keyboard. Basic Functions Addition The addition (sum function) is used by clicking on the "+" button or using the keyboard. This function represents x^. The function results in a-b. Multiplication The multiplication (times function) is used by clicking on the "x" button or using the keyboard "*" key. 6 . Square Root The square root function is used by clicking on the "x" button or type "sqrt()". The function results in -1*x. The function results in a*b. Sign The sign key (negative key) is used by clicking on the "(-)" button. The function results in x*x. Division The division (divide function) is used by clicking on the "/" button or using the keyboard "/" key. Square The square function is used by clicking on the "x^2" button or type "^2". The function results in a/b.5 where the result squared is equal to x. The function results in a+b. Raise to the Power The raise to the power (y raised to the x function) is used by clicking on the "y^x" button or type "^".

Inverse Multiplicative inverse (reciprocal function) is used by pressing the "1/x" button or typing "inv()".5e+100 or 4.71828. 7 . Factorial The Factorial function is used by clicking the "!" button or type "!". Logarithm The logarithm (LOG) is used by clicking on the "LOG" button or type "LOG()". PI PI is a mathematical constant of the ratio of a circle's circumference to its diameter. The result is e (2. Numbers are automatically displayed in the format when the number is too large or too small for the display.5e-100.. To do this enter the mantissa (the non exponent part) then press "EEX" or type"e" and then enter the exponent. for example 4. Exponent Numbers with exponents of 10 are displayed with an "e". This function is the same as x^-1 or dividing 1 by the number.. Natural Logarithm The Natural logarithm (LN) is used by clicking on the "LN" button or type "LN()".Natural Exponential The natural exponential (e raised to the x) is used by clicking on the "e^x" button or type "exp()".) raised to x. This function represents 10^x. To enter a number in this format use the exponent key "EEX".

It keeps into the account the Economical bandwidth available for the new system. o The system will be efficient and fast in response. o Which will help user in viewing his data and privileges. The foremost thing that is taken care of is the Need and Requirements of the User. PROPOSED SYSTEM The following documentation is a project the “Name of the term paper allotted”. DESCRIPTION Before developing software we keep following things in mind that we can develop powerful and quality software PROBLEM STATEMENT o Problem statement was to design a module: o Which is user friendly o Which will restrict the user from accessing other user’s data. o Which will help the administrator to handle all the changes. o The system will be customized according to needs. It is a detailed summary of all the drawbacks of the old system and how the new proposed system overcomes these shortcomings. The new system takes into account the various factors while designing a new system. FUNCTIONS TO BE PROVIDED: The system will be user friendly and completely menu driven so that the users shall have no problem in using all options. o (View o Add o Delete o Modify) SYSTEM REQUIRMENTS Operating system: MS Windows XP or Windows Vista Language: C Language Processor: Pentium IV Processor RAM: 512 MB Hard disk: 5 GB 8 .

System design is a solution. 9 . Here we use Flowchart to supplement the working of the new system. it provides the understanding and procedural details necessary for the implementation. For that. a “HOW TO” approach to the creation of a new system. It translates system requirements into ways by which they can be made operational. durable and above all should have least possible maintenance costs. It should overcome all the drawbacks of the Old existing system and most important of all meet the user requirements. SYSTEM DESIGN Then we began with the design phase of the system. It is a translational from a user oriented document to a document oriented programmers. The system thus made should be reliable.

c Inverse(1/ os) x) Ye s Do you want to continue? No Switch off calculator STOP 10 . START Welcome to main menu of Scientific Calculator Enter Your Choice? On Do your any calculator task Trignometery(sin.

int)."c:\\tc\\bgi")."xrty".dpf.1415265 union REGS i."=". *sci[]={"Sin"."6"."0".y-20)."Cosh"."DEG".x-20.h> #include<alloc.x1.h> #include<mouse. line(20."Cos". *ms[]={"AC"."Sinh"."+/-"}.setfillstyle(1."BKSP"}.int)."Hypot". initgraph(&gd.25."/".i."x^y".20."3".j."Exp"."OCT"."9"."7".setfillstyle(1. setcolor(BLACK).y-20). int xy1[3]. rectangle(20. int x." 1/x".20.40). setfillstyle(1." #include<string. *cal[]={"+".BLUE). setcolor(BLACK).h> #include<stdlib. /*ALLOCATE MEMORY TO z2*/ x=getmaxx()."eqn".int. setcolor(DARKGRAY). char *z2. void draw() //-----DRAW THE BODY OF CALCULATOR { int gm.50.DARKGRAY).int."Tanh". long double *z1.h> #include<math.20."fact".y=getmaxy().BLUE).h> #define pi 3."x^2".x-20.LIGHTGRAY)."ln".int. //grey calculator body floodfill(50."-"> #include<graphics. setcolor(BLUE)."5". long double back(long double)."sqrt". int sr."ã"}.20."BIN" //INITIALISE GRAPHICS z2=(char * ) malloc(sizeof(char)*10)."*"."HEX". //black outline line(20. char *no[]={"1". long com(long.h> #include<stdio.CYAN).y. //CYAN outer body floodfill(5.}.BLACK). floodfill(25.&gm.20). rectangle(21.equ()."4"."2"."log"."."Tan". /* blue quit rectangle*/ 11 ."8". int box(int.o.h> #include<conio.alg(long double. double ns(long double.

y1+=40) /*x1=180*/ { box(x1.x1+=40) { j=0.x1<=180.y1+=40) { box(x1.y1. setcolor(BLACK). setcolor(WHITE).*.y1. y1+=20. setmouse(0. j+=2.y1+20.-.8. if(i==1&&j==10) outtextxy(x1+10. //---Quit setcolor(DARKGRAY). //---white i/o box floodfill(32. else outtextxy([i+j]).x1+=30) { j=0.BLACK). showmouse().BLACK).59. } /*---------------------------------------------------------------*/ /*--------printing simple algebric functions:(+. outtextxy(x-220.235. line(235./)----------*/ for(x1."Press Any Key To Quit.setfillstyle(1.70).y1<450.0). } } x1+=30.40. /*-----------------------------------------------------------------*/ /*--------------------print scientific functions-------------------*/ 12 . outtextxy(x/5.WHITE). rectangle(30.y-30). setcolor(BLUE). setcolor(BLUE).55.y1<450. for(y1=100.40. /*------------------printing nos. x1+=40. for(y1=100.WHITE.WHITE. y1+=20.WHITE). initmouse().y1+20. j++.95. } i++. outtextxy(x1+15.27.y1+20.---------------------*/ i=0. //grey partition line setfillstyle([j]).no[i+j]).x1<150."Scientific Calculator by-: Akash(02512) & Akhil(02514)"). for(x1=40.LIGHTGRAY).").

x. j++.k. y1+=20. } xy1[i]=x1. for(y1=100.WHITE.&y). char s[13]={" "}.x1+=30) { j=0.y1+20.HEX-------------*/ for(x1.sci[i+j]). while(!kbhit()) { Again: getmouse(&button.flag=1. box(x1.y1<450.y1+=40) /*x1=550*/ { if(j==5) break. outtextxy(x1+15.j. int x1. /*store X coordinates*/ i++.x1<501. } /*-----------MOUSE PROGRAMMING------------*/ mouse() { int button.y1.y1.y1+=40) { box(x1. } /*-----------------------------------------------------------------*/ /*------------------print MATHEMATICAL SYSTEMS: BIN. } void main() //MAIN DECLARATION { password().x1<=550.i. sr=1. long double n.&x.[j]). for(y1=100.l. for(x1.BLACK). y1+=20.y1. draw().WHITE.y1+20.&x. setcolor(RED).y1<450.&y). outtextxy(x1+15. /*x1=220*/ setcolor(BLUE).x1+=30) { j=0. while(button==1) { getmouse(&button.y. } } mouse(). } 13 . x1+=70. j+=3.55.70.BLACK).

s[0]=' '.59. setcolor(LIGHTGRAY).40.LIGHTGRAY). for(y1=100. } goto NEXT.y). strcpy(s.BLACK). strcpy(s.WHITE.40. //save no.BLACK. delay(200). } if(x>=xy1[2]&&x<=(xy1[2]+70)) /*sixth column check*/ { colm3([11]))==0) { if(flag==1) { n*=-1.WHITE).WHITE). 14 . } else { n*=-1. } for(x1=40. } if(x>=xy1[1]&&x<=(xy1[1]+70)) /*fifth column check*/ { colm2(n.sign s[0]='-'.[10]))==0) { if(dpf==0) { strcat(s. box(x1.y1+=40) { if(x>=x1 && y>=y1 && x<=x1+40 && y<=y1+40) { box(x1.x1<150." ")." "). strcpy(s.y).y).x1+=30) //1st & 2nd column check { j=0. floodfill(32.y1<450. if((strcmp(no[i+j].[i+j]). if((strcmp(no[i+j].y1. } if(strlen(s)>=11) goto Again. to string s dpf=1. sr=0. setcolor(DARKGRAY)." "). flag=1.if(sr==1) { i=0. dpf=0. setfillstyle(1. // +/. dpf=0.y1. if(x>=xy1[0]&&x<=(xy1[0]+70)) /*fourth column check*/ { colm1(n.

setcolor(DARKGRAY).LIGHTGRAY). ns(n. goto Again." ").no[i+j]).60. // display no. in i/o box goto Again. } y1+=20. to string s NEXT: n=_atold(s). } if(x>550 && x<605) // 7th column { setcolor(LIGHTGRAY).59. } if(x>550 && x<605 && y>340 && y<380) //BACKSPACE { delay(100).y).') dpf=0. strcpy(s. 15 . } } else strcat(s.59. n=pi. floodfill(32.BLACK).BLACK.WHITE. //array to long double setcolor(DARKGRAY). box(180.400.s). outtextxy(30. setcolor(LIGHTGRAY).WHITE).s). } i++. dpf=0.60. dpf=0.59.WHITE). outtextxy(30. l=strlen(s).LIGHTGRAY). goto Again. } if(x>180 && x<220) // 3rd column { setcolor(LIGHTGRAY). setcolor(DARKGRAY). floodfill(32.WHITE). j+=2. delay(200). setfillstyle(1.40. //save no. s[l-1]=s[l]. floodfill(32. setfillstyle(1.WHITE). setfillstyle(1.LIGHTGRAY). if(y>400 && y<440) // pi value { box(180. x1+=40.40. if(s[l-1]=='.400.

return 0. } if(y>220 && y<260) //multiply { box(180.160. //div(n)." ").BLACK). } /*-------perform algebric calculations---------*/ long double alg(long double n. } if(y>160 && y<200) //subtract { box(180.220.WHITE. long double r. box(180.40.40. //copy no.BLACK). i++. box(180.280. goto Again. goto Again. box(180.y).WHITE. delay(200). delay(200).40. return 0. z2[i]=42. z1[i]=n. return 0.1415265").280. } } } return.40. z2[i]=47.WHITE).40. int y ) { int y1.160. // sub(n). return 0.220. i++.WHITE.BLACK). //mul(n). z2[i]=43.BLACK. static int i. to z1 if(y>100 && y<140) //--add { box(180. } alg(n. outtextxy(30. z2[i]=45. delay(200). i++." 3.100.100. box(180.BLACK.40.WHITE).40.WHITE. // add(n).BLACK.60.WHITE). strcpy(s.BLACK.WHITE). } if(y>340 && y<380) //equal 16 . delay(200).BLACK). } if(y>280 && y<320) //divide { box(180. i++.40.

) { if(z2[i]=='*') /*------perform multiplication------*/ { z1[i]*=z1[i+1]. /*--------------*/ } for(i=0.BLACK).j.) { if(z2[i]=='+') /*------perform addition------*/ { if(z2[i-1]=='-') z1[i+1]*=-1.z2[j]!='\0'.WHITE.j++) 17 .340. for(j=i. return 0. } /*---------solve algebric functions--------*/ long double equ() { int i.WHITE). for(i=0. { box(180.BLACK. } return 0. z1[i]+=z1[i+1].z2[i]!='\0'. i=0.z2[i]!='\0'.j++) { z1[j+1]=z1[j+2].40.40.z2[i]!='\0'.j++) { z1[j+1]=z1[j+2]. for(j=i. z2[j]=(int)z2[j+1]. } /*--------------*/ for(i=0. for(j=i.z2[j]!='\0'. box(180. z1[i+1]=z2[i]='\0'. z2[j]=z2[j+1]. } } else i++. } } else i++.) { if(z2[i]=='/') /*------perform division------*/ { z1[i]/=z1[i+1].340. char ch[50]={" "}. delay(200). equ().z2[j]!='\0'.

BLACK).j++) { z1[j+1]=z1[j+2].ch).WHITE. //display result press(). { z1[j+1]=z1[j+2]. if(z2[1]=='p') /*------find yth power------*/ z1[0]=pow(z1[2]. gcvt(z1[0].z1[0]). if(y>100 && y<140) // AC function { box(550.WHITE).15.) { if(z2[i]=='-') /*------perform subtraction------*/ { z1[i]-=z1[i+1]. } /*--------------*/ if(z2[1]=='r') /*------find yth roots------*/ z1[0]=pow(z1[2]. int y ) { int y1.BLACK. long n.60. z2[j]=z2[j+1]. return 0.z1[0]). for(j=i. return 0. box(550.z2[i]!='\0'.z2[j]!='\0'. if(z2[1]=='h') /*------find hypotenuse------*/ z1[0]=hypot(z1[2]. n=b.55. } } else i++.100. delay(200).55. z2[j]=z2[j+1].1/z1[0]). /*------copy result to array----------*/ setcolor(DARKGRAY).100. /*--------------*/ } for(i=0. } /*-------perform numeric system calculations--------*/ double ns(long double b. } 18 . outtextxy(35. } } else

delay(200). BINARY & OCTAL-------------*/ long com(long b. itoa(b. box(550. com(n.280.55. int k=253. Eqn.s.55.BLACK).int k) { char *str. } /*---------common for HEX.BLACK.r1. } if( y>220 && y<260) // BINARY function { box(550.60.WHITE).220.c.r2.WHITE). } if( y>280 && y<320) //OCTAL function { box(550.k). int i=0. com(n. i++.2).BLACK.BLACK).220.16). box(550. delay(200).8).55.WHITE.disc.WHITE.str.55. restorecrtmode(). delay(200).WHITE.BLACK. closegraph().b. // integer to array if(k==16) { while(str[i]!='\0') { if(str[i]>96 && str[i]<103) str[i]-=32. 19 . */ roots( ) { float a. if( y>160 && y<200) // HEX function { box(550. } return 0. return 0. box(550. press().160. outtextxy(35.55. } /*Program to find roots of a Quad.str). com(n. } } setcolor(DARKGRAY).BLACK).160.y.x.WHITE).280.55.

x)."Enter the password").int c2) { setcolor(c1).r1.y1+40).y1+40. setcolor(c2).x1+l.y1+40).x=270.&gm. line(x1.c1). scanf("%f%f%f".x). settextstyle(1. outtextxy(200."*"). setfillstyle(1. return. c in ax%c+bx+c\n ". printf("\n r1=%f \n r2=%f \n". } getch().HORIZ_DIR.LIGHTGRAY). r2=(-b-sqrt(disc))/(2.k). for(i=0. disc= b*b-4*a*c.50.y.465).pass[10].0*a). setcolor(LIGHTBLUE). b. if(ch==13) break.y. line(x1+l. initgraph(&gd.r2).LIGHTBLUE). floodfill(x1+3.615. } /*password at start screen*/ password() { int i.&c). s=-disc.y1.& c1.0*a).y1+40). floodfill(50. 20 . printf("\n r2=%f-i%f". y=-b/(2*a).&b.3). printf("\n r1=%f+i%f".150."c:\\tc\\bgi"). } /*---------------BUTTONS------------------------*/ int box(int x1.15.i<=10.x1+l. char } else { r1=(-b+sqrt(disc))/(2. setfillstyle(1. rectangle(x1.i++.x1+l. outtextxy(x. return 0. if(disc<0) { printf("\n roots are IMAGINERY \n"). rectangle( x=sqrt(s)/(2*a).50. setcolor(BLACK).int l. printf("Input values of a.x+=10) { ch=getch().15).

LIGHTBLUE). setfillstyle(1.465). delay(300). if(y>=100 && y<=140) // SINE of entered no. bar(300.300)."Wrong Password").100.610. bar(30. delay(200).70. entered is in RADIANS /*-----------check for first column------------------*/ colm1(long double a.BLACK). { box(xy1[0]. delay(700). settextstyle(1. setcolor(WHITE).3). sound(1000*i+500).LIGHTBLUE). setfillstyle(1.250.615. rectangle(15. } 21 .100.HORIZ_DIR. setfillstyle(1. return 0.WHITE.330.i--) { setcolor(LIGHTBLUE).i>=0. outtextxy(310.50. char *str.50. sound(300). if(!strcmp(pass. else cleardevice(). setcolor(LIGHTBLUE).BLACK.240.WHITE). } pass[i]='\0'.WHITE). pass[i]=ch.15. setcolor(RED).70). delay(50).pass.10)).15). nosound()."as")) //compare entered string with password return 0."This program will terminate in 5 seconds") y) { double cal. box(xy1[0].55. z1[2]=a. nosound(). floodfill(50. outtextxy(220. } /*-----------solving scientific functions------------*/ //---the no. } exit(0). setcolor(RED).itoa(i. outtextxy(80. cal=sin(a).70. for(i=5.

if(y>=160 && y<=200) // HYPERBOLIC SINE of entered no. box(xy1[0]. } if(y>=340 && y<=380) // Yth POWER of entered no.WHITE.280.BLACK).70.340.610.280.BLACK. outtextxy(35.BLACK.WHITE).WHITE.70.WHITE). } if(y>=280 && y<=320) // Yth ROOT of entered no.WHITE).WHITE. z2[1]='h'.70.220. box(xy1[0]. { box(xy1[0]. delay(200). } /*-----------check for second column------------------*/ colm2(long double a.BLACK). cal=sinh(a). box(xy1[0].400. return(0) y) { double cal. box(xy1[0]. return 0. { box(xy1[0]. { box(xy1[0].10.WHITE). box(xy1[0].BLACK).55. } setcolor(DARKGRAY). } if(y>=400 && y<=440) // HYPOTENUSE of entered no.BLACK. 22 .60. int i.400. cal=exp(a).70. return 0. delay(200).70. setfillstyle(1.BLACK). gcvt(cal.220. char *str.70).str).340. z2[1]='p'. delay(200). z2[1]='r'.70.160. setcolor(WHITE).BLACK. { box(xy1[0]. press().70. delay(200).WHITE.WHITE). bar(30. return 0. } if(y>=220 && y<=260) // EXPONENTIAL of entered no.70.70. delay(200). { box(xy1[0].str).BLACK).70.WHITE.BLACK.WHITE).

box(xy1[1].70.BLACK).70. delay(200). cal=cos(a). if(y>=100 && y<=140) // COSINE of entered no.70. } setcolor(DARKGRAY).WHITE).10.WHITE. delay(200). { box(xy1[1]. box(xy1[1]. } if(y>=160 &&y<=200) // HYPERBOLIC COSINE of entered no. delay(200).WHITE). box(xy1[1].WHITE.400.BLACK.70.340.280.BLACK.220.WHITE).60.340. } if(y>=220 && y<=260) // NATURAL LOG of entered y) 23 .100.70. gcvt(cal. press().BLACK).400.BLACK.70.WHITE.70.str).BLACK). } if(y>=280 && y<=320) // INVERSE of entered no.280.BLACK. delay(200). { box(xy1[1]. { box(xy1[1]. { box(xy1[1].BLACK).BLACK). box(xy1[1].220.WHITE.70.100.str).WHITE). cal=1/a.160.BLACK).WHITE).WHITE.160. outtextxy(35. cal=cosh(a). box(xy1[1].70.WHITE.BLACK. } if(y>=400 && y<=440) // QUADRATIC EQN. } if(y>=340 && y<=380) // SQRT of entered no. { box(xy1[1]. { box(xy1[1].BLACK. delay(200).70. } /*-----------check for third column------------------*/ colm3(long double a. return 0.WHITE).70. roots(). box(xy1[1]. cal=log(a). cal=sqrt(a). return 0.70. draw(). delay(200).

24 .WHITE).70. box(xy1[2]. cal=1.280.WHITE).a>=1. } if(y>=160 && y<=200) //HYPERBOLIC TANGENT of entered no. { box(xy1[2]. outtextxy(35.400. box(xy1[2].70. char *str.610.WHITE).160.str). gcvt(cal.10.WHITE. cal=(180*a)/pi. { box(xy1[2].70.70.BLACK. { box(xy1[2].220. if(y>=100 && y<=140) // TANGENT of entered no.BLACK.{ double cal. } if(y>=400 && y<=440) // conversion of DEGREES to RADIANS { box(xy1[2].WHITE).70. } setcolor(DARKGRAY).WHITE).WHITE). delay(200).70. box(xy1[2].WHITE. } if(y>=220 && y<=260) // LOG TO THE BASE 10 of entered no.BLACK. delay(200).55.str). cal=tanh(a).70.BLACK). box(xy1[2].BLACK.BLACK. cal=log10(a). delay(200).2).BLACK). delay(200). setcolor(WHITE).100.BLACK. box(xy1[2].70.BLACK).70. delay(200).100.70.BLACK).70. press().a--) cal=cal*a. for(.340.BLACK).WHITE. } if(y>=340 && y<=380) // FACTORIAL of entered no. { box(xy1[2]. cal=tan(a). setfillstyle(1.340.60.WHITE.WHITE. return(0). } if(y>=280 && y<=320) // SQUARE of entered no.220. box(xy1[2].70).280. cal=pow(a.400.WHITE).WHITE. { box(xy1[2].BLACK). bar(30. delay(200).160.70.

20. /*---Quit---*/ } /*-----------------------END--------------------------------------*/ 25 .setfillstyle(1. rectangle(21.} //Changing the blue rectangle contents press() { int x. setfillstyle(1. setcolor(BLACK).20.27.25.RED). outtextxy(x-250.25.BLACK).40). /* blue rectangle*/ setcolor(WHITE).x-21.BLACK). outtextxy(x-220.").59. bar(21. /* blue rectangle*/ setcolor(WHITE).LIGHTGRAY). setcolor(LIGHTGRAY). x=getmaxx(). floodfill(32."Press Any Key To Quit.40).BLUE).WHITE). floodfill(25. setcolor(BLACK). /*---Continue---*/ getch()."Press Any Key To Continue"). setfillstyle(1. floodfill(25.x-21.27.

There are other concerns . students use calculators for schoolwork. it is possible for a child to type in −1 × −1 and obtain the correct answer '1' without realizing the principle involved. with some curricula restricting calculator use until a certain level of proficiency has been obtained. Also. while others concentrate more on teaching estimation techniques and problem-solving. and it can slow down students in exam 26 . Research suggests that inadequate guidance in the use of calculating tools can restrict the kind of mathematical thinking that students engage in. that a pupil could use the calculator in the wrong fashion but believe the answer because that was the result given.for example. In this sense. or that such use can prevent understanding of advanced algebraic concepts. Teachers try to combat this by encouraging the student to make an estimate of the result manually and ensuring it roughly agrees with the calculated result. Others have argued that calculator use can even cause core mathematical skills to atrophy. There remains disagreement about the importance of the ability to perform calculations "in the head". APPLICATIONS In most countries. the calculator becomes a crutch rather than a learning tool. There was some initial resistance to the idea out of fear that basic arithmetic skills would suffer.

Its basic function is to detect errors in the software. During requirement analysis and design. So the modifications that can be done in our project are: To make it screen touch so no need to touch key buttons and one more change which can we made is to add snaps of the person who use it.conditions as they check even the most trivial result on a calculator. TESTING Testing is the major control measure used during software development. This implies that testing not only. design and coding errors in the programs. FUTURE SCOPE OF THE PROJECT Our project will be able to implement in future after making some changes and modifications as we make our project at a very low level. has to uncover errors introduced during coding. the output is a document that is usually textual and no executable. computer programs are available that can be executed for testing purpose. After the coding phase. The 27 . Thus the goal of testing is to uncover the requirements. but also errors introduced during previous phase.

Electronics's'.Sourcecode declared above for the program of Scientific Calculator has been tested and it has been found that the above source code is okay and correct. 92 9.^ Slide Rules 13.Calculating Clock to Carnegie Mellon University 14. p. The containers thus served as a bill of lading or an accounts book. NPR.3010. these clay containers contained tokens. Nov. The algorithm is primarily used to identify the manufacturer of a particular calculator's CPU. 82. but for CORDIC it's a pathological case that produces different rounding errors on each chip that it is implemented on. 30 Sept 2007. or 4 places. p. Buromaschinen Mechaniker. 1961. since it is usually reproducible between chips of the same model. and the clay containers evolved into clay tablets with marks for the count.the algorithm's arcsin(arccos(arctan(tan(cos(sin(9)))))) should come out 9 on standard floating point hardware. pp. 1 1971. 3. Feb. ^ Kells. 8.^ Texas Instruments Celebrates the 35th Anniversary of Its Invention of the Calculator Texas Instruments press release. Dec. Redish. December 2007 2. http://www. p.^ "Single Chip Calculator Hits the Finish Line". for the count. p19 28 . 48. ^ Ancient Discoveries. 1961. Kern & Bland 1943.The program involves many type of conversions. ^ Kells. retrieved on 6 September 2008 7. ^ A Spanish implementation of Napier's bones (1617).^ Electronic Calculator Invented 40 Years Ago All Things Considered. Ifrah shows. ^ Lazos 1994 6. History Channel. the total of which were the count of objects being transferred.^ "Simple and Silent".^ IBM Archives: IBM 608 calculator 15. Kern & Bland 1943. 5. ^ Georges Ifrah notes that humans learned to count on their hands. p207 17. 19. Audio interview with one of the pp. ^ Mike Sebastian's calculator forensics algorithm is an example of such rounding errors -. In order to avoid breaking open the containers.^ Smart Computing Article . ^ According to Schmandt-Besserat 1981. Bing.^ Schmidhuber 11.^ "'Anita' der erste tragbare elektonische Rechenautomat" [trans: "the first portable electronic computer"]. Edward F. p1244 16. Office Magazine. as log(2)=. 180-181 12. is documented in Montaner i Simon 1887. These conversions has to done carefully REFERENCES 1. Eventually (Schmandt-Besserat estimates it took 4000 years) the marks on the outside of the containers were all that were needed to convey the count. Episode 11: Ancient Robots. 19-20.^ As quoted in Smith 1929. Thomas J. marks were placed on the outside of the containers. 18. Symbolic Manipulators Affect Mathematical Mindsets. a picture of Boethius (who lived 480–524 or 525) reckoning on his fingers in Ifrah 2000. for example. 15 Aug 2002. 10.

29 .