How does a calculator find sinx?

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 พ.ค. 2024
  • Online Python IDE: www.online-python.com/
    My code: www.online-python.com/diwYZl2Luj
    Credit to @HowToBasic for the clips I used in the video. I figured he wouldn't mind me stealing just a few seconds... hopefully.
    Knowledge of the following topics are essential to understand this video:
    Basic trigonometry (obviously)
    Radians & Degrees
    Matrices
    Chapters:
    0:00 Explaination
    5:26 Programming

ความคิดเห็น • 218

  • @David_Box
    @David_Box 18 วันที่ผ่านมา +572

    the most egregious programming tutorial ever

    • @daprince3559
      @daprince3559 18 วันที่ผ่านมา +26

      horrendous, perchance

    • @Bolaside
      @Bolaside 18 วันที่ผ่านมา

      @@daprince3559 you can't just say perchance

    • @hallrules
      @hallrules 18 วันที่ผ่านมา

      @@daprince3559 you cant just say perchance

    • @ianweckhorst3200
      @ianweckhorst3200 18 วันที่ผ่านมา +12

      It has befouled us

    • @harley_2305
      @harley_2305 18 วันที่ผ่านมา

      @@daprince3559you can’t just say perchance

  • @LethalChicken77
    @LethalChicken77 16 วันที่ผ่านมา +230

    My favorite part is how it still uses a trig function

    • @janpaul74
      @janpaul74 15 วันที่ผ่านมา +18

      indeed, how do we get rid of the atan for f**k sake? ;-)

    • @Tof0986
      @Tof0986 15 วันที่ผ่านมา +28

      @@janpaul74 Thought the same first, then concluded that these are arctan of always the same values, then it can be hardcoded, I guess.

    • @Tovarris
      @Tovarris 15 วันที่ผ่านมา

      @@janpaul74 You can use taylor series to approximate trig functions as a polynomial. For example cosx = 1 - (x^2)/2! + (x^4)/4! - (x^6)/6! + ... Look up taylor series for more info. I believe they are used to approximate trig functions and also other tricky functions like e^x as well. It is also how exact values of these functions were found before calculators.

    • @dariosucevac7623
      @dariosucevac7623 11 วันที่ผ่านมา +3

      @@janpaul74 i think they use Taylor series for a close aproximation

    • @firstduckofwellington6889
      @firstduckofwellington6889 6 วันที่ผ่านมา

      @@dariosucevac7623 Nah, the Taylor series is too inefficient.
      Check out the CORDIC algorithm
      en.wikipedia.org/wiki/CORDIC

  • @aria.z124
    @aria.z124 18 วันที่ผ่านมา +178

    you are the howtobasic of mathematics. lol

  • @communismwizard8198
    @communismwizard8198 18 วันที่ผ่านมา +292

    Funnily enough, I wasn’t too hurt when you used curly braces instead of a colon. It’s a common mistake, sometimes it gets hard switching between languages very often.
    I was hurt when you called that symbol a “hashtag”

    • @Momie_et_Masque
      @Momie_et_Masque 18 วันที่ผ่านมา +76

      I didn't even notice he used curly braces but I was hurt when he used special characters in variable names instead of spelling them (phi, theta) or even using representative names.

    • @ianweckhorst3200
      @ianweckhorst3200 18 วันที่ผ่านมา +4

      Also, he could’ve easily saved the import and just used 1/(2**n), for someone teaching us about math, he sure doesn’t know basic math facts

    • @ianweckhorst3200
      @ianweckhorst3200 18 วันที่ผ่านมา +2

      Although he probably did need atan from math, but the question here is uh, how would one calculate that by hand, it’s clearly needed for the formula, and while there is an integral formula, it’s still an integral, and integrals are pretty equal in their difficulty to calculate, plus, even once you’ve gotten past that difficulty, there’s even some square roots that even with a definite formula, the formula is quite difficult and time consuming when you’ve converted your numbers to binary, otherwise, it’s pretty close to impossible, and since the atan is part of an approximation, and you have to stack two approximations which grow harder exponentially the more you stack them, and you’ve got a recipe for a horrible or likely impossible time getting it, if there was some solution he gave to that, let me know

    • @LichtMarv
      @LichtMarv 18 วันที่ผ่านมา +6

      he literally said it in the video, you can just use a lookup table for the values of n. since n is just a counter and therefore a natural number, you can just cover all the cases of n in one lookup table, no need to implement an atan function yourself.

    • @SpringySpring04
      @SpringySpring04 18 วันที่ผ่านมา +2

      Curly braces are just so much nicer to look at tho. (Yes I hate python)

  • @mrshmister173
    @mrshmister173 17 วันที่ผ่านมา +45

    Finally, a channel does a better explanation of the Cordic algorithm than just "rotating the vector" to approximate a trig function, When rotations require trig functions. Brilliant video.

  • @HenryStrattonFW
    @HenryStrattonFW 18 วันที่ผ่านมา +51

    This is all well and good. But to any future programmers watching this, please do not use weird Unicode math characters in your code, just use the names of things, like phi, theta, delta, using these symbols will drive anyone that isn’t a heavy math user mad when trying to read your code.

    • @mad_6519
      @mad_6519 3 วันที่ผ่านมา +2

      tbh I'd kinda rather learn the meaning of 3 characters and not have big variable names like that. if you need readability, just shove a comment in explaining each symbol

  • @hafixion
    @hafixion 18 วันที่ผ่านมา +65

    Hey there, awesome video, but I did just want to give a pointer. Using a variable called d next to x, y, or phi is generally considered an abuse of notation since it looks closer to an infinitesimal rather than actual variable.

  • @r75shell
    @r75shell 18 วันที่ผ่านมา +34

    1) I think even if it's what algorithm is really used, there are some fine details about things regarding precision. Because if it shows 6 decimal places, then all of them should be correct. But error in cycle accumulates
    2) Your code won't work for angles > 4pi
    3) Question in the beginning was how do you calculate those without calculator. But then you pull out from somewhere: some constant which is limit of product (which is also you need to calculate without calculator), and table of 50 arctan, which you also need to calculate.
    I think more plausible way to calculate sin/cos without calculator to use angle halving formulas, and rotate by pi/2, pi/4, pi/8, pi/16 and so on.

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา +3

      The algorithm is called CORDIC, apparently each iteration gives 1 more decimal place of accuracy

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา +1

      You can read about it on Wikipedia, under modes of operation, it shows that the part inside the product can be written in the form 1/sqrt(1+2^-n) which is much more manageable to compute.

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา

      Of course because of the symmetry of sine, you only need to calculate a domain of (0, π/2)

    • @r75shell
      @r75shell 17 วันที่ผ่านมา

      @@BryanLu0 it won't give you correct 6 decimal places if each term of summation will be calculated up to 6th decimal places.

    • @user-yb4dz7pl2h
      @user-yb4dz7pl2h 2 วันที่ผ่านมา

      well you can always take the angle mod 4pi

  • @kamilrichert8446
    @kamilrichert8446 18 วันที่ผ่านมา +53

    If someone doesn't want to use pow function, the powers of 2 can be achieved by taking 1 and shifting it a few bits (remembering that 2^(-n) is the same as 1/2^(n))

    • @kakuserankua
      @kakuserankua 18 วันที่ผ่านมา +11

      That works when multiplying by two because the result is an integer, but dividing one by two results in a floating point number which don't quite lend themselves to the same bitwise shift operation. You can, however, keep 2^n in an integer variable (starting as 1) and for every iteration shift to the left once (which multiplies it by 2), then divide 1 by the result.
      Also, Python does have an exponentiation operator (double asterisks) and a built-in pow() function not part of the math library. Both would eliminate the need to use the math library (we still need it for arctan however).

    • @IRedBerryI
      @IRedBerryI 18 วันที่ผ่านมา +2

      @@kakuserankua was gonna say, why not use 2**n?

    • @declanmoore
      @declanmoore 18 วันที่ผ่านมา

      @@kakuserankuaif you really want you can subtract n from the exponent to divide by 2^n for floats :)

    • @luigidabro
      @luigidabro 17 วันที่ผ่านมา

      You try do that on a float.

    • @kamilrichert8446
      @kamilrichert8446 17 วันที่ผ่านมา

      @@luigidabro that's why I said "remembering that 2(-n) is the same as 1/2^(n)". You can get a float by dividing by an integer

  • @kingbeauregard
    @kingbeauregard 18 วันที่ผ่านมา +8

    Didn't understand this, will have to watch again later. But when it comes to approximating sin and cos, I find that this is a good plan:
    1) Add or subtract multiples of 2*pi until you're in the range -pi to pi.
    2) Map the angle to the first quadrant and remember what that will do to the sign of the final result.
    3) If you're dong the sin or cos of an angle greater than pi/4, do the cos or sin of the complementary angle.
    With those three steps, we've guaranteed that our angle is no more than 0.785 radians. We can Taylor series it and get a good approximation within just a few terms. But we can take it even further:
    4) Pre-calculate some sines and cosines of angles like pi/4, pi/8, etc. Save them as constants to whatever arbitrary degree of precision you like.
    5) Remember your trig identities, like sin(a+b) = sina*cosb + coa*sinb, and cos(a+b) = cosa*cosb - sina*sinb. With those in mind, suppose you want to calculate sin(3*pi/16). Well, that's sin(pi/8 + pi/16), and if you've precalculated sin(pi/8), then you just have to calculate sin(pi/16) and cos(pi/16) and do the trig identities. And since pi/16 is a little under 0.2, the calculations for sin(pi/16) and cos(pi/16) will converge very quickly.

    • @IsYitzach
      @IsYitzach 17 วันที่ผ่านมา +2

      I would have done something similar myself. I don't know if I would have invoked the trig identities, but I would have considered it.

  • @trwn87
    @trwn87 18 วันที่ผ่านมา +4

    Instant subscription. Perfect intro into math amd coding combined for oeople unfamiliar with it. Keep it up!

  • @MelonLord8
    @MelonLord8 20 วันที่ผ่านมา +82

    Excellent video mate! However, wouldnt a taylor series be easier for a calculator to deal with?

    • @9remi
      @9remi 20 วันที่ผ่านมา +5

      yes..

    • @TheUnqualifiedTutor
      @TheUnqualifiedTutor  19 วันที่ผ่านมา +98

      A Taylor series is easier for a human because the equation is shorter. However computers/calculators work in a binary number system (base 2). So the multiplication by powers of 2 is very easy for a computer because it just requires all the digits to be shifted (like how multiplication by powers of 10 is done by shifting the digits in our natural base 10 system.) This is why we used the 2^-n in the equations as this is easy to calculate for computers, maybe I should have included this in the video. Thanks

    • @sepdronseptadron
      @sepdronseptadron 18 วันที่ผ่านมา +26

      ​@@TheUnqualifiedTutor Slight correction/addition,
      Since we're dealing with floats, we don't shift the digits (as in bit shifting)
      floats are represented in the form of sign*mantissa*2^exp (a bit simplified, look up IEEE 754 for the whole thing)
      so when we calculate 2^-n, we just subtract n from the exp part
      shifting the bits only works for integers

    • @angeldude101
      @angeldude101 18 วันที่ผ่านมา +1

      ​@@sepdronseptadron As far as I'm concerned, adding and subtracting from the exponent field is basically the same operation as shifting. The only real difference is that for floats it doesn't have the modular behavior that integers have. If you're writing a typical decimal number, you can multiply by 10 by writing a zero, or if you're using scientific notation you can do the same by adding 1 to the exponent.
      There's a C function called "ldexp" which is basically a shift for floating point numbers, taking an integer and adding it to the float's exponent field. If there was any flat operation to overload the shift operators to, it would be ldexp.

    • @user-hy8ju1yn5g
      @user-hy8ju1yn5g 17 วันที่ผ่านมา

      ​@@angeldude101shifting bits is multiplying/dividing by powers of 2, to add/subtract you can't shift bits in a general case scenario

  • @cheezey3295
    @cheezey3295 18 วันที่ผ่านมา +27

    this guys gonna be huge in the future

  • @JohnDlugosz
    @JohnDlugosz 15 วันที่ผ่านมา +2

    From the thumbnail, I thought it would be how modern calculators give symbolic answers for special cases when it recognizes them.
    IAC, what you described is called the CORDIC algorithm. It needs one iteration per bit of the answer, so 55 iterations seems right as that matches the mantissa of a double precision floating point value.
    CORDIC _can_ be implemented using only addition, subtraction, bit shifts, and table lookups -- no multiplication or division. Your code doesn't exploit this, and in fact uses division gratuitously. (division being horribly slow even on modern CPUs). This makes it the preferred algorithm for low-end calculators that use 8-bit microcontrollers.
    For a more capable CPU, the Taylor series takes fewer iterations and will need fewer as the angle is smaller.

  • @LemonCake101
    @LemonCake101 18 วันที่ผ่านมา

    Amazing video, I wish you the best your future efforts, and I can only hope you keep this quality up!

    • @jansatamme6521
      @jansatamme6521 15 วันที่ผ่านมา

      Helo Lemon man

    • @LemonCake101
      @LemonCake101 15 วันที่ผ่านมา

      @@jansatamme6521 o/

  • @il_panda1979
    @il_panda1979 7 วันที่ผ่านมา

    thanks a lot. this has been a question at the back of my mind for a lot of time

  • @yogoc3432
    @yogoc3432 18 วันที่ผ่านมา +23

    Pretty cool! Though if we don’t have functions for sine and cosine, shouldn’t we also not have functions for arctangent? Or is this actually the way computers calculate it?

    • @cody8743
      @cody8743 18 วันที่ผ่านมา +2

      i have no experience, but they are all the same so you can probably just precalculate and store them

    • @adw1z
      @adw1z 18 วันที่ผ่านมา +8

      There are many different ways to approximate functions usually, some less computationally costly than others. For example, arctan(x) is the integral from 0 to x of 1/1+u^2 du, and there are so many ways to approximate integrals such as this. The way in which the function is computed depends on the type of computer/calculator you are using

    • @communismwizard8198
      @communismwizard8198 18 วันที่ผ่านมา +4

      You’re only taking the arctan of a small set of numbers (negative powers of two), so yes recalculating and storing will work. Whereas for the final trig functions themselves, any number could be the input

    • @danix30001
      @danix30001 18 วันที่ผ่านมา +4

      You could have a table of atan(2^-n) that is fixed for every calculation of the sin, cos and tan

  • @Faroshkas
    @Faroshkas 18 วันที่ผ่านมา +1

    Hello, what app do you use for that blackboard? I thought it looked very cool.

  • @simonwillover4175
    @simonwillover4175 18 วันที่ผ่านมา +3

    8:08 the ** operator also works. i.e: 2**(-n)

  • @auztenz
    @auztenz 18 วันที่ผ่านมา +19

    Wow this vedio is very underrated. Excellent subscribed

  • @markthompson2874
    @markthompson2874 18 วันที่ผ่านมา +1

    I remember in the 70's my dad brought home a TI calculator that had trig functions. Being about 8, I had no idea what they mean but I thought it was interesting that the calculator would take a couple of seconds to handle these functions. I made it my goal in life to be able to use all the functions on a calculator (it also had log as well.) But always wondered why it took so long to calculate sin, now I know.

  • @sometwo7429
    @sometwo7429 18 วันที่ผ่านมา +6

    Damn, i didnt know howtobasic was a mathematician 💀

  • @berkberilbayraktar8301
    @berkberilbayraktar8301 17 วันที่ผ่านมา

    this channel is a gem how i just saw this

  • @joshuao4928
    @joshuao4928 17 วันที่ผ่านมา +1

    Cool video! If you want to make those print statements a little easier to write and more readable, you can put an 'f' before the quotes and use curly brackets to avoid needing the str() functions. As in print(f"sin({θ}) = {y}")

  • @arduous222
    @arduous222 8 วันที่ผ่านมา

    Something worth noting here is, you still need to calculate arctan(2^-n) somehow, which is also a trig function. However, given this is very close to 2^-n, you can simply remove arctan for larger order terms, and perhaps hard-code first few terms to further decrease error.

  • @jackkalver4644
    @jackkalver4644 18 วันที่ผ่านมา

    In degrees, use angle bisection as approximation. In radians, use the power series.

  • @MCPicoli
    @MCPicoli 16 วันที่ผ่านมา +1

    How do you get rid of the atan() function in the code? We're not supposed to use trig functions here, unless there is a video explaining how to approximate atan() without other trig functions!

  • @itz_mario.
    @itz_mario. 17 วันที่ผ่านมา

    or simply use binomial expansion of trig functions, define the function, replace the x with the variable name in the function parameter, keep writing as many terms as you can then you will get almost identical results to real values

  • @wetwillyis_1881
    @wetwillyis_1881 17 วันที่ผ่านมา +4

    Imagine if a business major sees this. I think they’ll explode. Math majors may be sad, depressed, lonely, and overworked, but at least we can understand shit like this!

  • @steamnotstem9047
    @steamnotstem9047 10 วันที่ผ่านมา

    being an actual python programmer, seeing the beginner tactics (like concatenation instead of functional strings or using Unicode characters as variables, or printing instead of returning) made me remind myself that beginners don't need to follow python conventions when their methods work. This was before I noticed you used curly brackets.
    (no hard feelings, great video)

  • @MrBeiragua
    @MrBeiragua 4 วันที่ผ่านมา

    This means that the calculator needs to have a arctan(x) table in the memory or defined somehow for it to calculate sin(x)?

  • @gky93
    @gky93 10 วันที่ผ่านมา

    You can just use tailor series, it works well with small numbers

  • @BryanLu0
    @BryanLu0 17 วันที่ผ่านมา

    4:51 I understand how the arctan values can be precomputed, but how do you calculate the cosine?

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา +1

      Ok, based on the Wikipedia article, the part inside the product can be written as, 1/sqrt(1+2^-n) which is much more manageable to calculate

  • @TannerJ07
    @TannerJ07 11 วันที่ผ่านมา

    I love the part where you used wolfram alpha to make you own trigonometric equation

  • @drstrangelove09
    @drstrangelove09 17 วันที่ผ่านมา

    I coded up CORDIC many years ago and was going to implement it in a FPGA but got bogged down with the floating point conversions.

  • @LaMirah
    @LaMirah 16 วันที่ผ่านมา

    7:54 Python uses the same double-asterisk operator as FORTRAN for exponentiation, so 2ⁿ would be written as `2 ** n`. Math.pow() always returns floating point numbers as a result, whereas the double-star operator will return integer values when appropriate.

  • @jacksc9855
    @jacksc9855 18 วันที่ผ่านมา

    Acktually the sin is calculated using multiple techniques.
    Firstly, you only need to calculate the first quarent of the sin. Since other quarent can be calculate using trig.
    Secondly, look up table is used for common value like π/12, π/6, π/4, π/3, π/2 and more.
    Thirdly, values are close to 0 are return without calculation.
    Depend on how accurate the approximation need to be, cordic and Chebyshev polynomials can be use.

  • @NStripleseven
    @NStripleseven 18 วันที่ผ่านมา +1

    Why does the algorithm for finding trig functions need you calculate arctan? How does it do that?

    • @sowndolphin5386
      @sowndolphin5386 18 วันที่ผ่านมา

      dont you use a knife to open another knife's box, or use the seed that an already-grown tree gives, to make another tree, dont question

    • @hallrules
      @hallrules 18 วันที่ผ่านมา +1

      either a lookup table (precalculated arctan values by hand probably) or "i used the arctan to find the arctan"

  • @Sudipto911
    @Sudipto911 18 วันที่ผ่านมา +1

    Great video bruv! Just remember me when you have millions of subscribers😃

  • @pranaypallavtripathi2460
    @pranaypallavtripathi2460 4 วันที่ผ่านมา

    why can't we use infinite series expansion of sin, taking the first n terms such that it gives answer within accepted error limit?

  • @zhixinhuang4084
    @zhixinhuang4084 13 วันที่ผ่านมา +1

    What will you do? A B C or D?
    A: You can always go to the park
    B: You can always get to work on time
    C: You can always make a PERFECT triangle
    D: You go to Paris every year
    E: you ALWAYS get what you want

  • @mrtnsnp
    @mrtnsnp 17 วันที่ผ่านมา

    I do get some weird values. π/4 stops after 2 iterations, but ends up at the really wrong value (0.6072529350088812 instead of 0.7071067811865475). And cos(0) is really wrong, after 1 iteration. For π/2 the sin and cos are fine, but understandably the tan value is a bit wonky.

  • @yigitrefikguzelses291
    @yigitrefikguzelses291 18 วันที่ผ่านมา

    This was really a tutoriel that I watched with curiosity until the end. I liked both the math and computer part very much. My only question is, cos(arctan(1)).cos(arctan(2)).cos(arctan(3))... I think it is not appropriate to calculate it on the computer. Because we used trig again?
    Also i _think_ you can use Taylor Series of sinx , cosx, or tanx for example:
    sinx ~ x -x^3/3! + x^5/5! -x^7/7!

  • @borbzaby
    @borbzaby 18 วันที่ผ่านมา +1

    Nice video. I didn’t understand everything but it was pretty interesting 👍

  • @charlieborchardt2066
    @charlieborchardt2066 15 วันที่ผ่านมา

    "But wait, that requires cos and sin."
    "Aaaarerggghg!!!!!!!!!" Got me dying. 💀 Eggs in a blender.

  • @its_aidan
    @its_aidan 18 วันที่ผ่านมา +1

    this is amazing

  • @rieder990
    @rieder990 17 วันที่ผ่านมา

    Good video!

  • @beaverbuoy3011
    @beaverbuoy3011 18 วันที่ผ่านมา +2

    Very nice!

  • @xbia1
    @xbia1 17 วันที่ผ่านมา +1

    Iteration isn't the fastest method and there's a chance that change never reaches zero because of finite precision. It's better to use a polynomial or rational function. See Computer Approximations by J.F. Hart et al.

  • @guush890
    @guush890 13 วันที่ผ่านมา

    instead of math.pow, you can do 2**-n, no idea if it has the same time complexity tho

  • @simonyi912
    @simonyi912 3 วันที่ผ่านมา

    Confirmed, Wolfram Alpha existed before calculators did.

  • @GeorgiMomchilov
    @GeorgiMomchilov 17 วันที่ผ่านมา

    The most underrated chanell on the platform

  • @shang_psycho7414
    @shang_psycho7414 18 วันที่ผ่านมา +1

    I’ve wanted to know this for a while

    • @user-zc5jz6bh2r
      @user-zc5jz6bh2r 18 วันที่ผ่านมา +1

      sin(x) = (4x(180 - x)) / (40500 - x (180 - x))
      error margin: 0.0016
      maximum relative error is less than 1.8%
      Bhaskara I's sine approximation

  • @jasonnong3305
    @jasonnong3305 6 วันที่ผ่านมา

    Fortunate that people were able to use wolfram alpha back in the day, despite not having a calculator

  • @georgephilippe4028
    @georgephilippe4028 14 วันที่ผ่านมา

    The whole point of the original CORDIC (published by Jack Volder in 1957ish) was to replace computationally heavy/expensive multiplication and division in old memory-poor computers with additions/subtractions and some table lookups. Logs were also possible.
    Though based on some obscure 17th Century mathematics it was still a damn impressive algorithm.
    The code here would not have worked efficiently on early computers and calculators. In fact, it would have defeated the whole point of the original CORDIC.
    Interesting, though.

  • @gamingdiamond352
    @gamingdiamond352 18 วันที่ผ่านมา

    cool approximation of sin cos and tan, impressively interesting approach to programming it tho

  • @kavinbala8885
    @kavinbala8885 18 วันที่ผ่านมา

    i thought it used a parabolic approximation for 0-pi/2. then reflected and rotated that as necessary

  • @billr3053
    @billr3053 17 วันที่ผ่านมา +1

    Better to pronounce the sign() function as SIGNUM. Not “sine” - because that would confuse it with sin().

  • @mathematicalmachinery7934
    @mathematicalmachinery7934 17 วันที่ผ่านมา

    8:03 that's not "to the power of", that's "xor". XOR is a weird binary thingy, if you want "to the power of", use ** instead of ^

  • @mariobabic9326
    @mariobabic9326 15 วันที่ผ่านมา

    calculators actually have tables with all the sin values with the maximum precision they need. they dont directly calculate sin() because of perfomance

  • @jangelbrich7056
    @jangelbrich7056 15 วันที่ผ่านมา

    And I thought for half a century that mathematicians and programmers have zero emotions ...

  • @theredstonehive
    @theredstonehive 3 วันที่ผ่านมา

    If you're gonna use a trig function anyway (atan), why not just
    def trig(theta):
    return math.sin(theta)

  • @victorien3704
    @victorien3704 18 วันที่ผ่านมา +1

    Video: How to make a trig function
    8:45 : Ok first you have to use a trig function

  • @notohkae
    @notohkae 4 วันที่ผ่านมา +1

    i love this

  • @joaocordeiro6539
    @joaocordeiro6539 3 วันที่ผ่านมา

    Imagine being in 1956 without a calculator and having a Python interpreter...xD

  • @loulounya
    @loulounya 18 วันที่ผ่านมา

    How does the calculator display it in a form like √2 /2 or 3π/2?

    • @loulounya
      @loulounya 18 วันที่ผ่านมา

      or even something like (1+√2)/2

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา

      It's precalculated for some known values

  • @randospawn7495
    @randospawn7495 18 วันที่ผ่านมา +2

    I noticed the brackets immediately and was very confused by it, I was like:
    Why didn't we just do this in c or somethin and why did he do that?

    • @TheUnqualifiedTutor
      @TheUnqualifiedTutor  18 วันที่ผ่านมา

      You are eagle-eyed. I used python because its easier for beginners imo.

  • @xniyana9956
    @xniyana9956 10 วันที่ผ่านมา

    Interesting video but I don't like the fact that this algorithm uses a trig function to define other trig functions. I think it's sexier to derive trig functions from lower level math abstractions.

  • @GeomeTeamCraft
    @GeomeTeamCraft 18 วันที่ผ่านมา +6

    Why are you so fucking funny lmao

  • @user-lu9fg7pc9q
    @user-lu9fg7pc9q 16 วันที่ผ่านมา

    11:00 this jump scared me slightly

  • @Anife69
    @Anife69 13 วันที่ผ่านมา

    peak cinema of math

  • @mr.dragon.purple9209
    @mr.dragon.purple9209 13 วันที่ผ่านมา +1

    0:15 A

  • @dragoni_penguin
    @dragoni_penguin 17 วันที่ผ่านมา

    now make an infinite precision pi calculator

  • @jonathandawson3091
    @jonathandawson3091 18 วันที่ผ่านมา +3

    The humor isn't quite for me. It's jarring and frankly distracting.
    Also, why do you use arctan to generate sin? How will you compute it if it is not available, since one should presume it is an equally complicated function?
    If the answer is taylor expansion, what's wrong with using good old taylor expansion for sin / cost / tan in the first place?

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา +1

      CORDIC is better for CPUs, as there is no multiplication needed

  • @noway2831
    @noway2831 4 วันที่ผ่านมา

    Okay, umm, how do you calculate arctan? You've kinda kicked the can down the road by relying on another function. Obviously you could do numerical integration but that would be slow as balls

  • @aaab6054
    @aaab6054 18 วันที่ผ่านมา +1

    Why use this approach over a Taylor / Maclaurin series?

    • @Tomyb15
      @Tomyb15 18 วันที่ผ่านมา +1

      Faster convergence and probably more numerically stable.

    • @aaab6054
      @aaab6054 18 วันที่ผ่านมา +1

      I've looked into it now and Taylor / Maclaurin series definitely converge faster(as I suspected), but the CORDIC algorithm he is using is faster for the CPU.

  • @valcubeto
    @valcubeto 14 วันที่ผ่านมา

    When I saw the brackets I died

  • @diogoduarte4097
    @diogoduarte4097 18 วันที่ผ่านมา

    I have subscribed

  • @CesarGrossmann
    @CesarGrossmann 18 วันที่ผ่านมา

    Legend says the CORDIC isn't used anymore.

  • @o_s-24
    @o_s-24 14 วันที่ผ่านมา

    Why not use Taylor series approximations?

  • @AbdallahAhmed-qz6uu
    @AbdallahAhmed-qz6uu 12 วันที่ผ่านมา

    can't you just use maclaurin's expansion for the first couple terms

  • @j7ndominica051
    @j7ndominica051 14 วันที่ผ่านมา

    I had to stop watching a few minutes in because I couldn't focus afraid of a scene with wasted eggs and phone books sudddenly appearing.

  • @rifatbhuiyan2543
    @rifatbhuiyan2543 17 วันที่ผ่านมา

    I thought calculators use Taylor's series. What's wrong with that?

  • @johnplays9654
    @johnplays9654 15 วันที่ผ่านมา +1

    С) Taylor series

  • @user-vt7kt6ny3o
    @user-vt7kt6ny3o 18 วันที่ผ่านมา

    ok but how to calculate the atan then?

    • @carultch
      @carultch 16 วันที่ผ่านมา

      You can calculate arctan as an integral of 1/(x^2 + 1) dx. Use Simpson's rule to evaluate this integral, and it can find arctangent.

  • @philipstoop1955
    @philipstoop1955 23 ชั่วโมงที่ผ่านมา

    Watcing this as a programmer hurts.

  • @ze5os427
    @ze5os427 18 วันที่ผ่านมา

    8:15 or you can use the ** operator

  • @krishnachoubey8648
    @krishnachoubey8648 17 วันที่ผ่านมา

    8:13 Could've just used the ** (double-star) operator.
    if you're worried about any performance issues.... IDGAF HE'S PROGRAMMING IN PYTHON FOR FUCK'S SAKE

  • @dragoni_penguin
    @dragoni_penguin 17 วันที่ผ่านมา

    imagine not waiting until deltamath was invented

  • @raiden.b6163
    @raiden.b6163 18 วันที่ผ่านมา +5

    Also me, who knows what sin 60 degrees is and also knows that 60 degree = 1.047 radian. so i just approx sin of 1 radian as sin of 60 degrees which gives me 0.86. I call that good enough and move on. ᕙ(⇀‸↼‶)ᕗ + 1 sub

  • @alguem24
    @alguem24 17 วันที่ผ่านมา

    I really liked the video but the python part made we want to bang my head

  • @excelmaster2496
    @excelmaster2496 18 วันที่ผ่านมา +3

    How does a calculate find atan(2^-n)?

    • @kebien6020
      @kebien6020 18 วันที่ผ่านมา +6

      Since it only ever uses atan(1/2), atan(1/4), atan(1/8) up to atan(1/2^maxIterations), you can pre-calculate those and stick them into a lookup table

    • @hallrules
      @hallrules 18 วันที่ผ่านมา +3

      @@kebien6020 wait how do u precalculate it

    • @spaghettiking653
      @spaghettiking653 18 วันที่ผ่านมา

      Maybe Maclaurin expansion, then print all the values and write them into a big list

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา

      ​@@hallrulesarctan = integral 1/(x² + 1) dx
      The question is how do you then take the cosine?

  • @kelvenlim9283
    @kelvenlim9283 17 วันที่ผ่านมา

    How to find sin of whatever? Use tan. But how do I find the tan of whatever?

  • @MinnalBot_
    @MinnalBot_ วันที่ผ่านมา

    0:17 ☠️

  • @megablademe4930
    @megablademe4930 5 วันที่ผ่านมา

    I guess he used unicode characters for demonstation purposes, but please don’t. Use emojis instead.

  • @honsthebronze
    @honsthebronze 15 วันที่ผ่านมา

    ERORR: division by zero line 7 and 13

  • @wetwillyis_1881
    @wetwillyis_1881 17 วันที่ผ่านมา +1

    Imagine if Aliens come down and see us doing this, and just pull out a protractor and say “guys, why aren’t you just using these with scale models?”

  • @Snurklll
    @Snurklll 18 วันที่ผ่านมา +1

    I actually asked myself 2 days or so ago

  • @paradiselost9946
    @paradiselost9946 18 วันที่ผ่านมา

    but this isnt how a calculator does it?
    wheres the half adders? the full adders? the shift register?
    wheres the decimal to binary conversion?
    the complements of 9?
    all i saw was someone write code, that is then compiled by some program to hex, or machine code, and THAT is utterly different to what a calculator is actually doing to perform this, or any other calculation...
    try busting down the hex into opcodes and then stepping through how the actual processor deals with the code loaded to it...

    • @BryanLu0
      @BryanLu0 17 วันที่ผ่านมา

      There's no way this video would've hit the algorithm if he actually wrote machine code lol

  • @stormswindy3013
    @stormswindy3013 10 วันที่ผ่านมา

    the frustrated AUURRGHHH 🥚