let my={} function squarerootMain(){let version='0.9' let w=540 let h=180 let s="";s+='
';s+='';s+='';s+='';s+=wrap('val1','output','abs','top:29px;') s+=wrap('val2','output','abs','top:109px;') s+=wrap('','','rel','font: 0.7rem Arial; color: #6600cc;',`© 2021 MathsIsFun.com v${version}`) s+='
';docInsert(s) my.canRoot=canvasInit('canvasId',w,h,2) showVal(1,9) let sqClr='#edd400' let rootClr='#729fcf' let g=my.canRoot.g g.lineWidth=3;g.strokeStyle=sqClr g.beginPath() g.moveTo(180,150) g.quadraticCurveTo(250,150,250,100) g.stroke();g.moveTo(250,100) g.lineTo(240,110) g.moveTo(250,100) g.lineTo(260,110) g.stroke();g.strokeStyle=rootClr g.beginPath() g.moveTo(260,150) g.quadraticCurveTo(340,150,350,100) g.stroke();g.moveTo(260,150) g.lineTo(270,140) g.moveTo(260,150) g.lineTo(270,160) g.stroke();g.fillStyle=sqClr g.font="20px Verdana" g.fillText("Square",160,120) g.fillStyle=rootClr g.font="20px Verdana" g.fillText("Square Root",280,170)} function showVal(n,v){let el1=document.getElementById("val1");let el2=document.getElementById("val2");let v1,v2,v2Fmt;if(n==1){v1=parseFloat(v);let vn=Math.round(v1) if(v1>(vn-0.02)&&v1<(vn+0.02))v1=vn v2=Math.sqrt(v1) v2Fmt=fmt(v2,4) console.log('=',v2Fmt,v2) if(v2Fmt!=v2)v2Fmt+='...' let r2=document.getElementById("r2");r2.value=v2;}else{v2=v;let vn=Math.round(v2*10)/10 if(v2>(vn-0.02)&&v2<(vn+0.02))v2=vn v2Fmt=v2;v1=fmt(v2*v2,12);el1.value=v1;let r1=document.getElementById("r1");r1.value=v1;} el1.innerHTML=v1;let xpos=v1*25+10 el1.style.left=xpos+"px";el2.innerHTML=v2Fmt;xpos=v2*25+10 el2.style.left=xpos+"px";} function fmt(num,digits=15){if(num==Number.POSITIVE_INFINITY)return "undefined";if(num==Number.NEGATIVE_INFINITY)return "undefined";num=Number(num.toPrecision(digits));if(Math.abs(num)<1e-15)num=0;return num;} function docInsert(s){let div=document.createElement('div') div.innerHTML=s let script=document.currentScript script.parentElement.insertBefore(div,script);} function canvasInit(id,wd,ht,ratio){let el=document.getElementById(id);el.width=wd*ratio;el.style.width=wd+"px";el.height=ht*ratio;el.style.height=ht+"px";let g=el.getContext("2d");g.setTransform(ratio,0,0,ratio,0,0);return{el:el,g:g,ratio:ratio}} function wrap(id,classStr,type='rel',styleExtra='',middle=''){let s='' s+='\n' let inpQ=classStr.includes('input') s+=inpQ?'0)s+=' id="'+id+'"' if(classStr.length>0)s+=' class="'+classStr+'"' if(type=='rel'){s+=' style="position:relative; '+styleExtra+'"'} if(type=='abs'){s+=' style="position:absolute; '+styleExtra+'"'} s+=inpQ?' />':' >'+middle+'' return s}