# Integral/Derivative Graphing Calculator

## Recommended Posts

Here's a graphing calculator I've been making,

It can graph most functions and solve basic derivatives and integrals

I haven't gotten around to making functions for solving indefinite integrals yet,

and i know that my derivative functions don't work for all types of functions.

BuckMaster

Graphing Calc.rar

## Create an account

Register a new account

• ### Similar Content

• it recomended to use the builten function
_DateDiff

hello autoit team
i made a simple function to help me get the difference between to date
i liked to share it with you
the paramatrs of this function
is firstdate and lastedate
the two params is as the following
year/month/day hours:minuts:seconds
here is the function

#include <date.au3> func _dateBetween(\$s_firstDate, \$s_lastDate = default) if not (StringRegExp(\$s_firstDate, "((\d{4})\/(\d{2})\/(\d{2})\s(\d{2})\:(\d{2})\:(\d{2}))", 0) = 1) then Return SetError(1, 0, 0) if \$s_lastDate = default then \$s_lastDate = @year & "/" & @mon & "/" & @mday & " " & @hour & ":" & @min & ":" & @sec if not (StringRegExp(\$s_lastDate, "((\d{4})\/(\d{2})\/(\d{2})\s(\d{2})\:(\d{2})\:(\d{2}))", 0) = 1) then Return SetError(2, 0, 0) local \$a_FirstSplitDate = StringSplit(StringRegExpReplace(\$s_firstDate, "((.*)\s(.*))", "\$2"), "/", 2) local \$a_FirstSplitTime = StringSplit(StringRegExpReplace(\$s_firstDate, "((.*)\s(.*))", "\$3"), ":", 2) local \$a_lastSplitDate = StringSplit(StringRegExpReplace(\$s_lastDate, "((.*)\s(.*))", "\$2"), "/", 2) local \$a_LastSplitTime = StringSplit(StringRegExpReplace(\$s_lastDate, "((.*)\s(.*))", "\$3"), ":", 2) local \$i_firstDateValue = _DateToDayValue(\$a_FirstSplitDate[0], \$a_FirstSplitDate[1], \$a_FirstSplitDate[2]) local \$i_LastDateValue = _DateToDayValue(\$a_LastSplitDate[0], \$a_LastSplitDate[1], \$a_LastSplitDate[2]) if \$i_firstDateValue > \$i_LastDateValue then Return SetError(3, 0, 0) local \$i_totalDays = \$i_LastDateValue-\$i_firstDateValue if not (\$i_totalDays = 0) then if \$a_FirstSplitTime[0] <= \$a_lastSplitTime[0] then \$i_totalDays += 1 \$a_lastSplitTime[0] -= \$a_FirstSplitTime[0] elseIf \$a_FirstSplitTime[0] > \$a_lastSplitTime[0] then if \$i_totalDays > 0 then \$i_totalDays -= 1 \$a_FirstSplitTime[0] -= \$a_lastSplitTime[0] endIf endIf endIf local \$i_totalYears = 0 if \$i_totalDays >= 365 then While \$i_totalDays >= 365 \$i_totalYears += 1 \$i_totalDays -= 365 Wend endIf local \$i_TotalMonths = 0 if \$i_totalDays >= 30 then While \$i_totalDays >= 30 \$i_totalMonths += 1 \$i_totalDays -= 30 Wend endIf local \$i_totalWeeks = 0 if \$i_totalDays >= 7 then While \$i_totalDays >= 7 \$i_totalWeeks += 1 \$i_totalDays -= 7 Wend endIf \$i_totalSeconds = (((\$a_FirstSplitTime[0]*60)*60)+(\$a_FirstSplitTime[1]*60)+(\$a_FirstSplitTime[2]))-(((\$a_lastSplitTime[0]*60)*60)+(\$a_lastSplitTime[1]*60)+(\$a_LastSplitTime[2])) local \$minus = "" if \$i_totalSeconds < 0 then \$minus = "-" \$i_totalSeconds = StringReplace(\$i_totalSeconds, "-", "") endIf local \$i_totalHours = 0 if \$i_totalSeconds >= 3600 then While \$i_totalSeconds >= 3600 \$i_totalHours += 1 \$i_totalSeconds -= 3600 Wend endIf local \$i_totalminuts = 0 if \$i_totalSeconds >= 60 then While \$i_totalSeconds >= 60 \$i_totalminuts += 1 \$i_totalSeconds -= 60 Wend endIf local \$a_arrayReturn[7] \$a_arrayReturn[0] = \$i_totalYears \$a_arrayReturn[1] = \$i_totalMonths \$a_arrayReturn[2] = \$i_totalWeeks \$a_arrayReturn[3] = \$i_totalDays \$a_arrayReturn[4] = \$minus & \$i_totalHours \$a_arrayReturn[5] = \$minus & \$i_totalminuts \$a_arrayReturn[6] = \$minus & \$i_totalSeconds return \$a_arrayReturn endFunc
here is an example

\$a_calc = _dateBetween("2015/02/12 23:00:05", "2030/02/12 23:25:50") msgBox(64, "result", StringFormat("the difference is : %i years and %i months and %i weeks and %i days and %i hours and %i minuts and %i seconds", \$a_calc[0], \$a_calc[1], \$a_calc[2], \$a_calc[3], \$a_calc[4], \$a_calc[5], \$a_calc[6]))
with my greetings
• By imitto
Hello all!
I use Autoit for a while, already made some automation for a TV station's master control room with it. I made a UDF to easily work with PAL timecode and time with milliseconds, convert, add or subtract them. Feel free to use it if you want something like this
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Description=PAL Timecode Calculator UDF #AutoIt3Wrapper_Res_LegalCopyright=horvath.imre@gmail.com #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; ; #FUNCTION# ; Name...........: _tcAdd ; Description....: Returns addition of two timecodes ; Syntax.........: _tcAdd(\$fTc1, fTc2 [, \$fFormat = "P"]) ; ; Parameters.....: \$fTc1 - First timecode in hh:mm:ss.ff format ; \$fTc2 - Second timecode in hh:mm:ss.ff format ; \$fFormat - Time base - "P" (default): PAL (25 fps) ; "M" : millisecond ; ; Return value...: Sum of the two timecode in the selected format Func _tcAdd(\$fTc1, \$fTc2, \$fFormat = "P", \$fHourFormat = 1) Local \$fMs1 = _tcToMs(\$fTc1) Local \$fMs2 = _tcToMs(\$fTc2) Local \$fSumMs = \$fMs1 + \$fMs2 Return _msToTc(\$fSumMs, \$fFormat, \$fHourFormat) EndFunc ; #FUNCTION# ; Name...........: _tcsSub ; Description....: Returns addition of two timecodes ; Syntax.........: _tcSub(\$fTc1, fTc2 [, \$fFormat = "P"]) ; ; Parameters.....: \$fTc1 - First timecode in hh:mm:ss.ff format ; \$fTc2 - Second timecode in hh:mm:ss.ff format ; \$fFormat - Time base - "P" (default): PAL (25 fps) ; "M" : millisecond ; ; Return value...: Subtract \$fTc2 from \$fTc1 in the source format Func _tcSub(\$fTc1, \$fTc2, \$fFormat = "P") Local \$fMs1 = _tcToMs(\$fTc1) Local \$fMs2 = _tcToMs(\$fTc2) Local \$fSumMs = \$fMs1 - \$fMs2 If \$fSumMs < 0 Then \$fSumMs = _tcToMs("24:00:00.00") - (\$fSumMs * -1) EndIf Return _msToTc(\$fSumMs, \$fFormat) EndFunc ; #FUNCTION# ; Name...........: _tcToMs ; Description....: Returns timecode converted to total milliseconds ; Syntax.........: _tcToMs(\$fTc) ; ; Parameters.....: \$fTc - Timecode in hh:mm:ss.ff or hh:mm:ss:xxx format, where xxx are milliseconds ; ; Return value...: Milliseconds as an integer value Func _tcToMs(\$fTc) Local \$fTemp = StringSplit(\$fTc, ":.") Local \$fChr = StringLen(\$fTemp[4]) Switch \$fChr Case 2 Return (\$fTemp[4] * 40) + (\$fTemp[3] * 1000) + (\$fTemp[2] * 60000) + (\$fTemp[1] * 3600000) Case 3 Return (\$fTemp[4]) + (\$fTemp[3] * 1000) + (\$fTemp[2] * 60000) + (\$fTemp[1] * 3600000) EndSwitch EndFunc ; #FUNCTION# ; Name...........: _msToTc ; Description....: Converts total milliseconds to timecode ; Syntax.........: _msToTc(\$fIn, \$fFormat = "P", \$fHourFormat = 1) ; ; Parameters.....: \$fIn - Time in milliseconds ; \$fFormat - Output format "P": PAL TC (default) ; "M": hh:mm:ss.xxx where xxx are milliseconds ; \$fHourFormat - Hour format "1": max. value is 23, then starts from 0 (default) ; "0": hours can be more then 23 ; ; Return value...: Timecode as string in the selected format Func _msToTc(\$fIn, \$fFormat = "P", \$fHourFormat = 1) Switch \$fFormat Case "P" Local \$fFr = StringFormat("%02i", (StringRight(\$fIn, 3) - Mod(StringRight(\$fIn, 3), 40)) / 40) Case "M" Local \$fFr = StringFormat("%03i", StringRight(\$fIn, 3)) EndSwitch \$fIn = StringTrimRight(\$fIn, 3) Local \$fSec = StringFormat("%02i", Mod(\$fIn, 60)) \$fIn -= \$fSec Local \$fMinTot = \$fIn / 60 Local \$fMin = StringFormat("%02i", Mod(\$fMinTot, 60)) \$fIn -= \$fMin*60 Local \$fHourTot = \$fIn / 60 / 60 Switch \$fHourFormat Case 1 \$fHour = StringFormat("%02i", Mod(\$fHourTot, 24)) Case 0 \$fHour = StringFormat("%02i", \$fHourTot) EndSwitch Return(\$fHour & ":" & \$fMin & ":" & \$fSec & "." & \$fFr) EndFunc ; #FUNCTION# ; Name...........: _tcFormatChange ; Description....: Toggle TC format ; Syntax.........: _tcFormatChange(\$fTc) ; ; Parameters.....: \$fTc - Timecode in hh:mm:ss.ff or hh:mm:ss:xxx format, where xxx are milliseconds ; ; Return value...: PAL timecode or time with milliseconds as string, depends on input Func _tcFormatChange(\$fTc) Local \$fTemp = StringSplit(\$fTc, ":.") Local \$fChr = StringLen(\$fTemp[4]) Switch \$fChr Case 2 Return \$fTemp[1]&":"&\$fTemp[2]&":"&\$fTemp[3]&"."&StringFormat("%03i", \$fTemp[4]*40) Case 3 Return \$fTemp[1]&":"&\$fTemp[2]&":"&\$fTemp[3]&"."&StringFormat("%02i", (\$fTemp[4]-Mod(\$fTemp[4], 40))/40) EndSwitch EndFunc And the example script:
TC_CALC_example.au3
_PAL_TC_Calc.au3

• hi everyone!
I need some help with my rpn calculator.
I first translated it from vbscript to autoitscript and that's when i stumbled on problem one:
(46) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
\$Stack[ubound(\$Stack)] = \$Item
^ ERROR
After that (and i know this from testing it as a vbscript) it can't work with negative numbers:
"1 - - 2" to Reverse Polish notation = "1 - 2 -" gives me the build in error...

Can you guy's help me with my code pleas?
Func Print(\$what,\$er = 0) \$t = '' if \$err <> 0 then \$t = 'ERROR!' MsgBox(\$er,\$st,\$what) EndFunc Func RPN(\$Tokenarray) Local \$Stack = [] Local \$Result Local \$Operator_B Local \$Operator_A For \$Token = 0 To Ubound(\$Tokenarray) If Isoperator(\$Tokenarray[\$Token]) Then \$Operator_B = Pop(\$Stack) \$Operator_A = Pop(\$Stack) If \$Operator_A = "" Then Print("The user has not input sufficient values in the expression.",16) exit EndIf Switch \$Tokenarray[\$Token] Case "+" \$Result = Number(\$Operator_A,3) + Number(\$Operator_B,3) Case "-" \$Result = Number(\$Operator_A,3) - Number(\$Operator_B,3) Case "*" \$Result = Number(\$Operator_A,3) * Number(\$Operator_B,3) Case "/" \$Result = Number(\$Operator_A,3) / Number(\$Operator_B,3) Case "^" \$Result = Number(\$Operator_A,3) ^ Number(\$Operator_B,3) EndSwitch Push(\$Result,\$Stack) Else Push(\$Tokenarray[\$Token],\$Stack) EndIf Next If Ubound(\$Stack) > 1 Then Print("The user input has too many values.",16) Exit EndIf Return pop(\$Stack) EndFunc Func Push(\$Item, Byref \$Stack) If Ubound(\$Stack) > -1 Then Redim \$Stack[Ubound(\$Stack) + 1] \$Stack[Ubound(\$Stack)] = \$Item Else Local \$Stack = [\$Item] EndIf EndFunc Func Pop(\$Stack) \$pop = "" If Ubound(\$Stack) > -1 Then \$Pop = \$Stack[Ubound(\$Stack)] Redim \$Stack[Ubound(\$Stack) - 1] EndIf Return \$pop EndFunc Func Peek(\$Stack) \$peek = "" If Ubound(\$Stack) > -1 Then \$Peek = \$Stack(Ubound(\$Stack)) EndIf Return \$peek EndFunc Func Isoperator(\$Operator) Return StringInstr("+-*/^&<=>", \$Operator) <> 0 And StringLen(\$Operator) = 1 EndFunc Func Precedence(\$Operator) If Isoperator(\$Operator) Then Switch \$Operator case "^" Return 4 case "*","/" Return 3 case "+","-" Return 2 case "&" Return 1 case "<","=",">" Return 0 EndSwitch EndIf EndFunc ;################################################################################################## ; (4 - -5) = (4|-|-|5) = (4|-|5|-) ; input tokens rpn Global \$calculate_this = ["4","-","5","-"] Print(rpn(\$calculate_this)) thanks in advance ,
TheAutomator
• By careca
Ohm's Law Calculator, clear the field you need to calculate, power may give out zero, if both fields of power and amps are empty, clear power, and try again.

• Reverse Polish Notation (RPN) is a math notation in which each operator follows its two operands. I own an HP 48G calculator which uses RPN, and when I tried to use the windows calculator I had so much trouble that I wrote my own calculator. Basically, it has a stack of numbers; any time an operator is pressed, that operation is carried out immediately on the two items on the bottom of the stack, or the stack and the input if there is anything in the input. This method reduces the requirements for parenthesis and makes calculating equations/functions relatively easy: instead of
(sqrt(5+8))/(8*9)
you would enter
5 ENTER 8 + SQRT 8 ENTER 9 * /

Practical implications

calc2.au3
×

• Wiki

• Back

• #### Beta

• Git
• FAQ
×
• Create New...