www.delorie.com/archives/browse.cgi | search |
From: | James W Sager Iii <sager+@andrew.cmu.edu> |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | So I coded up my own square root function |
Date: | Sat, 17 Mar 2001 01:28:39 -0500 |
Organization: | Carnegie Mellon, Pittsburgh, PA |
Lines: | 81 |
Message-ID: | <wugkELu00UjD8Q1EVI@andrew.cmu.edu> |
NNTP-Posting-Host: | po8.andrew.cmu.edu |
X-Trace: | bb3.andrew.cmu.edu 984810769 1667 128.2.10.108 (17 Mar 2001 06:32:49 GMT) |
X-Complaints-To: | advisor AT andrew DOT cmu DOT edu |
NNTP-Posting-Date: | 17 Mar 2001 06:32:49 GMT |
X-Added: | With Flames (outnews v2.6) |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
Stupid djgpp isn't doing sqrt right so I made my own. Its processing time is like O log(n) or so. Returns an integer square root value within 1. #include <iostream.h> int ghettosqr(int square); void main(void) { int a; cout<<endl; a=ghettosqr(10001); cout<<a; } int ghettosqr(int square) { //A keeps track of a guess for the square root int a=1; //add keeps track off how much to add/subtract to A it. float add=1; //1=add -1 = sub depending int addsub=1; //A little extra factor that makes sure everything is decrementing float divisor=1; if(square == 1) return 1; if(square < 1) return 0; while(1) { //Return statements if((a*a) == square ) return a; if((a*a) > square ) if(((a-1)*(a-1)) < square ) return a; if((a*a) < square ) if(((a+1)*(a+1)) > square ) return a; //If incrementing and the guess is over estimated reverse the binary search if(addsub == 1) if(a*a > square) { //if(add < 2) //return a; add=add/4; addsub=-1; divisor = divisor * 1.1; } //If decrementing and the guess is under estimated reverse the binary search if(addsub == -1) if(a*a <square) { add=add/4; addsub=1; divisor = divisor * 1.1; } //change guess in the right direction a=a+add*addsub; //change binary search acceleration add=add+add/divisor; } }
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |