Visual Fox Pro file access - visual-foxpro

I have a function whitch creates .xml files with some data inside. Everytime firstly it deletes the old file. Everything works fine except it sometimes gets frozen and the file itself becomes locked. It's size is 0 kb and program can't even delete it. And I have to kill the process, delete the file by myself and then run the program again. Is it possible to kill all the processes of the same program before the begining of a new one? Or at least put some timer on it to make sure it turns off automatically after some time passes by?
Need some ideas, thanks.
fHandle = f_cFile("D:\Data\new_eur\Saskaitos.xml")
if fHandle < 0
**=messagebox("Can't create file!",16,"!!!")
=STRTOFILE("Can't create XML file" + CHR(13) + CHR(10), "d:\Log.txt", 1)
quit
ENDIF
** Header
if fputs(fHandle, '<?xml version="1.0" encoding="windows-1257"?>') < 0
=fclose(fHandle)
=STRTOFILE("Can't write to XML file" + CHR(13) + CHR(10), "d:\Log.txt", 1)
quit
endif
=STRTOFILE(TTOC(dateTIME()) + ": " + "XML ok"+CHR(13)+CHR(10), "d:\LogData.txt", 1)
=fputs(fHandle, "<Accounts>")
enteris = CHR(13)
DO WHILE NOT EOF()
=fputs(fHandle, "<Detali>")
=fputs(fHandle, "<Snr><![CDATA[" + ALLTRIM(Data.dok_nr) + "]]></Snr>" + enteris)
=fputs(fHandle, "<Code_ks><![CDATA[" + ALLTRIM(Data.Code_ks) + "]]></Code_ks>" + enteris)
=fputs(fHandle, "<Sdata>" + ALLTRIM(Data.dok_data) + "</Sdata>" + enteris)
=fputs(fHandle, "<Term>" + ALLTRIM(Duomenys.Terminas) + "</Term>" + enteris)
=fputs(fHandle, "<Manager><![CDATA[" + ALLTRIM(Data.Code_ms) + "]]></Manager>" + enteris)
IF Data.val_poz = 0
=fputs(fHandle, "<MokSuma>" + ALLTRIM(STR(Duomenys.SumaMok, 12, 2)) + "</MokSuma>" + enteris)
=fputs(fHandle, "<ApSuma>" + ALLTRIM(STR(Duomenys.ApSuma, 12, 2)) + "</ApSuma>" + enteris)
ELSE
=fputs(fHandle, "<MokSuma>" + ALLTRIM(STR(Duomenys.SumaVal, 12, 2)) + "</MokSuma>" + enteris)
=fputs(fHandle, "<ApSuma>" + ALLTRIM(STR(Duomenys.ApVal, 12, 2)) + "</ApSuma>" + enteris)
ENDIF
=fputs(fHandle, "</Detali>")
skip
ENDDO
fputs(fHandle, "</Accounts>")
=fclose(fHandle)
Now this is the code which puts xml data into the file. At some point it freezes and the next time program starts it is still using the same file.
Function f_cFile:
FUNCTION f_cFile
PARAMETERS fName
fHandle = fcreate(fName)
IF fHandle < 0
IF FILE(fName,1)
DELETE FILE fName
IF FILE(fName,1)
=STRTOFILE("Can't delete old file: " + fName + CHR(13) + CHR(10), " d:\Log.txt", 1)
ELSE
fHandle = fcreate(fName)
ENDIF
ENDIF
ENDIF
RETURN fHandle
ENDFUNC

Wow... many other options to simplify your locking issue. First without changing your stuff too much is to build via strings... Make a variable and keep appending to it until you are done, then write it with a single write command such as..
enteris = CHR(13)
myXML = '<?xml version="1.0" encoding="windows-1257"?>' + enteris;
+ "<Accounts>"
SCAN
myXML = myXML + "<Detali>";
+ "<Snr><![CDATA[" + ALLTRIM(Data.dok_nr) + "]]></Snr>" + enteris;
+ "<Code_ks><![CDATA[" + ALLTRIM(Data.Code_ks) + "]]></Code_ks>" + enteris;
+ "<Sdata>" + ALLTRIM(Data.dok_data) + "</Sdata>" + enteris;
+ "<Term>" + ALLTRIM(Duomenys.Terminas) + "</Term>" + enteris;
+ "<Manager><![CDATA[" + ALLTRIM(Data.Code_ms) + "]]></Manager>" + enteris
IF Data.val_poz = 0
myXML = myXML + "<MokSuma>" + ALLTRIM(STR(Duomenys.SumaMok, 12, 2)) + "</MokSuma>" + enteris;
+ "<ApSuma>" + ALLTRIM(STR(Duomenys.ApSuma, 12, 2)) + "</ApSuma>" + enteris
ELSE
myXML = myXML + "<MokSuma>" + ALLTRIM(STR(Duomenys.SumaVal, 12, 2)) + "</MokSuma>" + enteris;
+ "<ApSuma>" + ALLTRIM(STR(Duomenys.ApVal, 12, 2)) + "</ApSuma>" + enteris
ENDIF
myXML = myXML + "</Detali>";
ENDSCAN
myXML = myXML + "</Accounts>"
if StrToFile( myXML, "D:\Data\new_eur\Saskaitos.xml" ) = 0
=STRTOFILE("Can't create XML file" + CHR(13) + CHR(10), "d:\Log.txt", 1)
endif
Done... Let VFP handle the low level open and close of the writing.

Related

No more room for LISP objects error wxMaxima

I am trying to solve a non-linear equation system with maxima.
I use wxmaxima (17.05.0). The non-linear system is rather long and I am deeply sorry for posting the hole problem, but otherwise I do not think my problem will be clear.
I would like to solve these equations for eleven unkowns (K2 to K11) When I run this after some time the error message "No more room for LISP objects" occurs.
I have no glue how I can give it more cpu or to avoid the error.
I need the symbolic solutions for further calculations.
debugmode(true);
gcd : subres;
eq1:mBA*(K10*RABm10 + K11*RABm11 + K12*RABm12 + K7*RABm7 + K8*RABm8 + K9*RABm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RBm2 + K3*RBm3 + K4*RBm4 + K5*RBm5 + K6*RBm6) +
mAB*(K10*RABm10 + K11*RABm11 + K12*RABm12 + K7*RABm7 + K8*RABm8 +
K9*RABm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RBm10 + K11*M11*RBm11 + K12*M12*RBm12 + K2*M2*RBm2 +
K3*M3*RBm3 + K4*M4*RBm4 + K5*M5*RBm5 + K6*M6*RBm6 + K7*M7*RBm7 +
K8*M8*RBm8 + K9*M9*RBm9) =
mBA*(K10*RABm10 + K11*RABm11 + K12*RABm12 + K7*RABm7 + K8*RABm8 +
K9*RABm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RBm10 + K11*RBm11 + K12*RBm12 + K7*RBm7 + K8*RBm8 + K9*RBm9) +
mAB*(K10*RABm10 + K11*RABm11 + K12*RABm12 + K7*RABm7 + K8*RABm8 +
K9*RABm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RBm10 + K11*M11*RBm11 + K12*M12*RBm12 +
K2*M2*RBm2 + K3*M3*RBm3 + K4*M4*RBm4 + K5*M5*RBm5 + K6*M6*RBm6 +
K7*M7*RBm7 + K8*M8*RBm8 + K9*M9*RBm9)$
eq2:mCA*(K10*RACm10 + K11*RACm11 + K12*RACm12 + K7*RACm7 + K8*RACm8 + K9*RACm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RCm2 + K3*RCm3 + K4*RCm4 + K5*RCm5 + K6*RCm6) +
mAC*(K10*RACm10 + K11*RACm11 + K12*RACm12 + K7*RACm7 + K8*RACm8 +
K9*RACm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RCm10 + K11*M11*RCm11 + K12*M12*RCm12 + K2*M2*RCm2 +
K3*M3*RCm3 + K4*M4*RCm4 + K5*M5*RCm5 + K6*M6*RCm6 + K7*M7*RCm7 +
K8*M8*RCm8 + K9*M9*RCm9) =
mCA*(K10*RACm10 + K11*RACm11 + K12*RACm12 + K7*RACm7 + K8*RACm8 +
K9*RACm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RCm10 + K11*RCm11 + K12*RCm12 + K7*RCm7 + K8*RCm8 + K9*RCm9) +
mAC*(K10*RACm10 + K11*RACm11 + K12*RACm12 + K7*RACm7 + K8*RACm8 +
K9*RACm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RCm10 + K11*M11*RCm11 + K12*M12*RCm12 +
K2*M2*RCm2 + K3*M3*RCm3 + K4*M4*RCm4 + K5*M5*RCm5 + K6*M6*RCm6 +
K7*M7*RCm7 + K8*M8*RCm8 + K9*M9*RCm9)$
eq3:mDA*(K10*RADm10 + K11*RADm11 + K12*RADm12 + K7*RADm7 + K8*RADm8 + K9*RADm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RDm2 + K3*RDm3 + K4*RDm4 + K5*RDm5 + K6*RDm6) +
mAD*(K10*RADm10 + K11*RADm11 + K12*RADm12 + K7*RADm7 + K8*RADm8 +
K9*RADm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RDm10 + K11*M11*RDm11 + K12*M12*RDm12 + K2*M2*RDm2 +
K3*M3*RDm3 + K4*M4*RDm4 + K5*M5*RDm5 + K6*M6*RDm6 + K7*M7*RDm7 +
K8*M8*RDm8 + K9*M9*RDm9) =
mDA*(K10*RADm10 + K11*RADm11 + K12*RADm12 + K7*RADm7 + K8*RADm8 +
K9*RADm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RDm10 + K11*RDm11 + K12*RDm12 + K7*RDm7 + K8*RDm8 + K9*RDm9) +
mAD*(K10*RADm10 + K11*RADm11 + K12*RADm12 + K7*RADm7 + K8*RADm8 +
K9*RADm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RDm10 + K11*M11*RDm11 + K12*M12*RDm12 +
K2*M2*RDm2 + K3*M3*RDm3 + K4*M4*RDm4 + K5*M5*RDm5 + K6*M6*RDm6 +
K7*M7*RDm7 + K8*M8*RDm8 + K9*M9*RDm9)$
eq4:mEA*(K10*RAEm10 + K11*RAEm11 + K12*RAEm12 + K7*RAEm7 + K8*RAEm8 + K9*RAEm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*REm2 + K3*REm3 + K4*REm4 + K5*REm5 + K6*REm6) +
mAE*(K10*RAEm10 + K11*RAEm11 + K12*RAEm12 + K7*RAEm7 + K8*RAEm8 +
K9*RAEm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*REm10 + K11*M11*REm11 + K12*M12*REm12 + K2*M2*REm2 +
K3*M3*REm3 + K4*M4*REm4 + K5*M5*REm5 + K6*M6*REm6 + K7*M7*REm7 +
K8*M8*REm8 + K9*M9*REm9) =
mEA*(K10*RAEm10 + K11*RAEm11 + K12*RAEm12 + K7*RAEm7 + K8*RAEm8 +
K9*RAEm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*REm10 + K11*REm11 + K12*REm12 + K7*REm7 + K8*REm8 + K9*REm9) +
mAE*(K10*RAEm10 + K11*RAEm11 + K12*RAEm12 + K7*RAEm7 + K8*RAEm8 +
K9*RAEm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*REm10 + K11*M11*REm11 + K12*M12*REm12 +
K2*M2*REm2 + K3*M3*REm3 + K4*M4*REm4 + K5*M5*REm5 + K6*M6*REm6 +
K7*M7*REm7 + K8*M8*REm8 + K9*M9*REm9)$
eq5:mFA*(K10*RAFm10 + K11*RAFm11 + K12*RAFm12 + K7*RAFm7 + K8*RAFm8 + K9*RAFm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RFm2 + K3*RFm3 + K4*RFm4 + K5*RFm5 + K6*RFm6) +
mAF*(K10*RAFm10 + K11*RAFm11 + K12*RAFm12 + K7*RAFm7 + K8*RAFm8 +
K9*RAFm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RFm10 + K11*M11*RFm11 + K12*M12*RFm12 + K2*M2*RFm2 +
K3*M3*RFm3 + K4*M4*RFm4 + K5*M5*RFm5 + K6*M6*RFm6 + K7*M7*RFm7 +
K8*M8*RFm8 + K9*M9*RFm9) =
mFA*(K10*RAFm10 + K11*RAFm11 + K12*RAFm12 + K7*RAFm7 + K8*RAFm8 +
K9*RAFm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RFm10 + K11*RFm11 + K12*RFm12 + K7*RFm7 + K8*RFm8 + K9*RFm9) +
mAF*(K10*RAFm10 + K11*RAFm11 + K12*RAFm12 + K7*RAFm7 + K8*RAFm8 +
K9*RAFm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RFm10 + K11*M11*RFm11 + K12*M12*RFm12 +
K2*M2*RFm2 + K3*M3*RFm3 + K4*M4*RFm4 + K5*M5*RFm5 + K6*M6*RFm6 +
K7*M7*RFm7 + K8*M8*RFm8 + K9*M9*RFm9)$
eq6:mGA*(K10*RAGm10 + K11*RAGm11 + K12*RAGm12 + K7*RAGm7 + K8*RAGm8 + K9*RAGm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RGm2 + K3*RGm3 + K4*RGm4 + K5*RGm5 + K6*RGm6) +
mAG*(K10*RAGm10 + K11*RAGm11 + K12*RAGm12 + K7*RAGm7 + K8*RAGm8 +
K9*RAGm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RGm10 + K11*M11*RGm11 + K12*M12*RGm12 + K2*M2*RGm2 +
K3*M3*RGm3 + K4*M4*RGm4 + K5*M5*RGm5 + K6*M6*RGm6 + K7*M7*RGm7 +
K8*M8*RGm8 + K9*M9*RGm9) =
mGA*(K10*RAGm10 + K11*RAGm11 + K12*RAGm12 + K7*RAGm7 + K8*RAGm8 +
K9*RAGm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RGm10 + K11*RGm11 + K12*RGm12 + K7*RGm7 + K8*RGm8 + K9*RGm9) +
mAG*(K10*RAGm10 + K11*RAGm11 + K12*RAGm12 + K7*RAGm7 + K8*RAGm8 +
K9*RAGm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RGm10 + K11*M11*RGm11 + K12*M12*RGm12 +
K2*M2*RGm2 + K3*M3*RGm3 + K4*M4*RGm4 + K5*M5*RGm5 + K6*M6*RGm6 +
K7*M7*RGm7 + K8*M8*RGm8 + K9*M9*RGm9)$
eq7:mHA*(K10*RAHm10 + K11*RAHm11 + K12*RAHm12 + K7*RAHm7 + K8*RAHm8 + K9*RAHm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RHm2 + K3*RHm3 + K4*RHm4 + K5*RHm5 + K6*RHm6) +
mAH*(K10*RAHm10 + K11*RAHm11 + K12*RAHm12 + K7*RAHm7 + K8*RAHm8 +
K9*RAHm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RHm10 + K11*M11*RHm11 + K12*M12*RHm12 + K2*M2*RHm2 +
K3*M3*RHm3 + K4*M4*RHm4 + K5*M5*RHm5 + K6*M6*RHm6 + K7*M7*RHm7 +
K8*M8*RHm8 + K9*M9*RHm9) =
mHA*(K10*RAHm10 + K11*RAHm11 + K12*RAHm12 + K7*RAHm7 + K8*RAHm8 +
K9*RAHm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RHm10 + K11*RHm11 + K12*RHm12 + K7*RHm7 + K8*RHm8 + K9*RHm9) +
mAH*(K10*RAHm10 + K11*RAHm11 + K12*RAHm12 + K7*RAHm7 + K8*RAHm8 +
K9*RAHm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RHm10 + K11*M11*RHm11 + K12*M12*RHm12 +
K2*M2*RHm2 + K3*M3*RHm3 + K4*M4*RHm4 + K5*M5*RHm5 + K6*M6*RHm6 +
K7*M7*RHm7 + K8*M8*RHm8 + K9*M9*RHm9)$
eq8:mIA*(K10*RAIm10 + K11*RAIm11 + K12*RAIm12 + K7*RAIm7 + K8*RAIm8 + K9*RAIm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RIm2 + K3*RIm3 + K4*RIm4 + K5*RIm5 + K6*RIm6) +
mAI*(K10*RAIm10 + K11*RAIm11 + K12*RAIm12 + K7*RAIm7 + K8*RAIm8 +
K9*RAIm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RIm10 + K11*M11*RIm11 + K12*M12*RIm12 + K2*M2*RIm2 +
K3*M3*RIm3 + K4*M4*RIm4 + K5*M5*RIm5 + K6*M6*RIm6 + K7*M7*RIm7 +
K8*M8*RIm8 + K9*M9*RIm9) =
mIA*(K10*RAIm10 + K11*RAIm11 + K12*RAIm12 + K7*RAIm7 + K8*RAIm8 +
K9*RAIm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RIm10 + K11*RIm11 + K12*RIm12 + K7*RIm7 + K8*RIm8 + K9*RIm9) +
mAI*(K10*RAIm10 + K11*RAIm11 + K12*RAIm12 + K7*RAIm7 + K8*RAIm8 +
K9*RAIm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RIm10 + K11*M11*RIm11 + K12*M12*RIm12 +
K2*M2*RIm2 + K3*M3*RIm3 + K4*M4*RIm4 + K5*M5*RIm5 + K6*M6*RIm6 +
K7*M7*RIm7 + K8*M8*RIm8 + K9*M9*RIm9)$
eq9:mJA*(K10*RAJm10 + K11*RAJm11 + K12*RAJm12 + K7*RAJm7 + K8*RAJm8 + K9*RAJm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RJm2 + K3*RJm3 + K4*RJm4 + K5*RJm5 + K6*RJm6) +
mAJ*(K10*RAJm10 + K11*RAJm11 + K12*RAJm12 + K7*RAJm7 + K8*RAJm8 +
K9*RAJm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RJm10 + K11*M11*RJm11 + K12*M12*RJm12 + K2*M2*RJm2 +
K3*M3*RJm3 + K4*M4*RJm4 + K5*M5*RJm5 + K6*M6*RJm6 + K7*M7*RJm7 +
K8*M8*RJm8 + K9*M9*RJm9) =
mJA*(K10*RAJm10 + K11*RAJm11 + K12*RAJm12 + K7*RAJm7 + K8*RAJm8 +
K9*RAJm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RJm10 + K11*RJm11 + K12*RJm12 + K7*RJm7 + K8*RJm8 + K9*RJm9) +
mAJ*(K10*RAJm10 + K11*RAJm11 + K12*RAJm12 + K7*RAJm7 + K8*RAJm8 +
K9*RAJm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RJm10 + K11*M11*RJm11 + K12*M12*RJm12 +
K2*M2*RJm2 + K3*M3*RJm3 + K4*M4*RJm4 + K5*M5*RJm5 + K6*M6*RJm6 +
K7*M7*RJm7 + K8*M8*RJm8 + K9*M9*RJm9)$
eq10:mKA*(K10*RAKm10 + K11*RAKm11 + K12*RAKm12 + K7*RAKm7 + K8*RAKm8 + K9*RAKm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RKm2 + K3*RKm3 + K4*RKm4 + K5*RKm5 + K6*RKm6) +
mAK*(K10*RAKm10 + K11*RAKm11 + K12*RAKm12 + K7*RAKm7 + K8*RAKm8 +
K9*RAKm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RKm10 + K11*M11*RKm11 + K12*M12*RKm12 + K2*M2*RKm2 +
K3*M3*RKm3 + K4*M4*RKm4 + K5*M5*RKm5 + K6*M6*RKm6 + K7*M7*RKm7 +
K8*M8*RKm8 + K9*M9*RKm9) =
mKA*(K10*RAKm10 + K11*RAKm11 + K12*RAKm12 + K7*RAKm7 + K8*RAKm8 +
K9*RAKm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RKm10 + K11*RKm11 + K12*RKm12 + K7*RKm7 + K8*RKm8 + K9*RKm9) +
mAK*(K10*RAKm10 + K11*RAKm11 + K12*RAKm12 + K7*RAKm7 + K8*RAKm8 +
K9*RAKm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RKm10 + K11*M11*RKm11 + K12*M12*RKm12 +
K2*M2*RKm2 + K3*M3*RKm3 + K4*M4*RKm4 + K5*M5*RKm5 + K6*M6*RKm6 +
K7*M7*RKm7 + K8*M8*RKm8 + K9*M9*RKm9)$
eq11:mLA*(K10*RALm10 + K11*RALm11 + K12*RALm12 + K7*RALm7 + K8*RALm8 + K9*RALm9)*
(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 + K2*M2*RAm2 +
K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 + K7*M7*RAm7 +
K8*M8*RAm8 + K9*M9*RAm9)*
(1 + K2*RLm2 + K3*RLm3 + K4*RLm4 + K5*RLm5 + K6*RLm6) +
mAL*(K10*RALm10 + K11*RALm11 + K12*RALm12 + K7*RALm7 + K8*RALm8 +
K9*RALm9)*(1 + K2*RAm2 + K3*RAm3 + K4*RAm4 + K5*RAm5 + K6*RAm6)*
(M1 + K10*M10*RLm10 + K11*M11*RLm11 + K12*M12*RLm12 + K2*M2*RLm2 +
K3*M3*RLm3 + K4*M4*RLm4 + K5*M5*RLm5 + K6*M6*RLm6 + K7*M7*RLm7 +
K8*M8*RLm8 + K9*M9*RLm9) =
mLA*(K10*RALm10 + K11*RALm11 + K12*RALm12 + K7*RALm7 + K8*RALm8 +
K9*RALm9)*(M1 + K10*M10*RAm10 + K11*M11*RAm11 + K12*M12*RAm12 +
K2*M2*RAm2 + K3*M3*RAm3 + K4*M4*RAm4 + K5*M5*RAm5 + K6*M6*RAm6 +
K7*M7*RAm7 + K8*M8*RAm8 + K9*M9*RAm9)*
(K10*RLm10 + K11*RLm11 + K12*RLm12 + K7*RLm7 + K8*RLm8 + K9*RLm9) +
mAL*(K10*RALm10 + K11*RALm11 + K12*RALm12 + K7*RALm7 + K8*RALm8 +
K9*RALm9)*(K10*RAm10 + K11*RAm11 + K12*RAm12 + K7*RAm7 + K8*RAm8 +
K9*RAm9)*(M1 + K10*M10*RLm10 + K11*M11*RLm11 + K12*M12*RLm12 +
K2*M2*RLm2 + K3*M3*RLm3 + K4*M4*RLm4 + K5*M5*RLm5 + K6*M6*RLm6 +
K7*M7*RLm7 + K8*M8*RLm8 + K9*M9*RLm9)$
sol:solve([eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,eq9,eq10,eq11],[K2,K3,K4,K5,K6,K7,K8,K9,K10,K11])$
Here are the missing infos about my system.
wxMaxima version: 17.05.0
Maxima version: 5.40.0
Maxima build date: 2017-06-01 18:54:32
Host type: x86_64-w64-mingw32
System type:
gcc -mno-cygwin -g -O2 -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type -Wmissing-declarations -Wno-sign-compare -Wno-format-nonliteral -O2 -fexpensive-optimizations -falign-functions=4 -D_WIN32 -DENABLE_UNICODE -I/usr/local/include -DDYNAMIC_FFI -I. -L/usr/local/lib -lintl /usr/local/lib/libreadline.dll.a -L/usr/local/lib -ltermcap /usr/local/lib/libavcall.a /usr/local/lib/libcallback.a -luser32 -lws2_32 -lole32 -loleaut32 -luuid -liconv -L/usr/local/lib -lsigsegv libgnu_cl.a
SAFETY=0 HEAPCODES STANDARD_HEAPCODES GENERATIONAL_GC SPVW_BLOCKS SPVW_MIXED TRIVIALMAP_MEMORY
libsigsegv 2.8
libiconv 1.13
libreadline 6.0 GNU C 3.4.5 (mingw-vista special r3) PC/386
Lisp implementation type: CLISP
Lisp implementation version: 2.49 (2010-07-07) (built on toshiba [192.168.43.206])
This seems to me like heap exhaustion. Using the :lisp directive from my comment above, you can investigate the current heap size in the underlying Lisp. This is implementation-specific, but assuming you're running on SBCL, the following would retrieve the heap size:
:lisp (cl-user::dynamic-space-size)
Now, Maxima recognizes an environment variable MAXIMA_LISP_OPTIONS, which is just a list of command line parameters passed to Lisp. In SBCL there's a parameter --dynamic-space-size, which specifies the heap size in megabytes. So by running Maxima as follows:
MAXIMA_LISP_OPTIONS="--dynamic-space-size 10000" maxima
you should run the underlying SBCL with 10 GB of heap space, which you can verify as above. This approach would have to be appropriately modified for other Lisp implementations. Let me know if this allows your calculations to run to completion.
I have changed a line in the maxima.bat file.
There you can find some thing like
if exist "%maxima_prefix%/bin/libgcc_s_seh-1.dll" (
if "%lisp_options%"=="" set lisp_options=--dynamic-space-size^ 200
)
I have changed the 200 MB to 8000 MB, this help me to increase the heap size but still I was not able to solve my system of non-linear equations.

Passing string parameter JPA native query

I have a native query I want to pass parameters to the following query:
SELECT dqlist.*,score(1) AS rank FROM dq_list_hash_full dqlist WHERE contains(dqlist.dq_english_name,'definescore(fuzzy(, 1, 6, weight),relevance)',1) > 0
I am using the question mark operator but somehow it is not understanding and giving me SQL grammer exception:
Here is my try:
SELECT dqlist.*,score(1) AS rank FROM dq_list_hash_full dqlist WHERE contains(dqlist.dq_english_name,'definescore(fuzzy('?1', 1, 6, weight),relevance)',1) > 0
My JPA repo method:
#Query(nativeQuery = true,value="SELECT\r\n" +
" a.EXTERNALID_ENC,\r\n" +
" a.EXTERNALID,\r\n" +
" a.TELNUMBER,\r\n" +
" a.TELAREACODE,\r\n" +
" a.DQ_ENGLISH_NAME,\r\n" +
" a.DQ_ARABIC_NAME,\r\n" +
" a.NAMEFIELD_1,\r\n" +
" a.USAGETYPE,\r\n" +
" a.STATE,\r\n" +
" a.REGION,\r\n" +
" a.LOCALITY,\r\n" +
" a.ADDITIONALLOCALITYINFO,\r\n" +
" a.GEN_TEXT_7,\r\n" +
" a.GEN_SHORTTEXT_1,\r\n" +
" a.GEN_SHORTTEXT_4,\r\n" +
" a.GEN_SHORTTEXT_9,\r\n" +
" a.GEN_SHORTTEXT_10,\r\n" +
" a.CBCM_ENGLISH_NAME,\r\n" +
" a.CBCM_ARABIC_NAME,\r\n" +
" a.CBCM_EMIRATE_NAME,\r\n" +
" a.CBCM_PARTY_ID,\r\n" +
" a.CBCM_ACCOUNT_ID,\r\n" +
" a.RECORD_ID,\r\n" +
" a.DISPLAY_FLAG,\r\n" +
" a.DISPLAY_FLAG_GROUP,\r\n" +
" a.LONGITUDE,\r\n" +
" a.LATITUDE,\r\n" +
" a.NORMALIZED_ENGLISH_NAME,\r\n" +
" a.CBCM_PARTY_ENGLISH_NAME,\r\n" +
" a.CBCM_PARTY_ARABIC_NAME,\r\n" +
" a.MANUAL_UPDATE_FLAG,\r\n" +
" a.RULE_UPDATE_FLAG,\r\n" +
" a.BUSINESS_UPDATE_FLAG,\r\n" +
" a.EXCEL_UPDATE_FLAG\r\n" +
" \r\n" +
" FROM\r\n" +
" (\r\n" +
" SELECT\r\n" +
" *\r\n" +
" FROM\r\n" +
" (\r\n" +
" SELECT\r\n" +
" dqlist.*,\r\n" +
" score(1) AS rank\r\n" +
" FROM\r\n" +
" dq_list_hash_full dqlist\r\n" +
" WHERE\r\n" +
" contains(dqlist.dq_english_name,'definescore(fuzzy(?1, 1, 6, weight),relevance)',1) > 0\r\n" +
" UNION\r\n" +
" SELECT\r\n" +
" dqlist.*,\r\n" +
" score(1) AS rank\r\n" +
" FROM\r\n" +
" dq_list_hash_full dqlist\r\n" +
" WHERE\r\n" +
" contains(dqlist.dq_english_name,'!?1' ,1) > 0\r\n" +
" )\r\n" +
" ORDER BY\r\n" +
" rank DESC\r\n" +
" ) a\r\n" +
"")
public List<DqListHashFullEntity> findByEngName(#Param("englishName") String englishName);
#Query(value="SELECT\r\n" +
" a.EXTERNALID_ENC,\r\n" +
" a.EXTERNALID,\r\n" +
" a.TELNUMBER,\r\n" +
" a.TELAREACODE,\r\n" +
" a.DQ_ENGLISH_NAME,\r\n" +
" a.DQ_ARABIC_NAME,\r\n" +
" a.NAMEFIELD_1,\r\n" +
" a.USAGETYPE,\r\n" +
" a.STATE,\r\n" +
" a.REGION,\r\n" +
" a.LOCALITY,\r\n" +
" a.ADDITIONALLOCALITYINFO,\r\n" +
" a.GEN_TEXT_7,\r\n" +
" a.GEN_SHORTTEXT_1,\r\n" +
" a.GEN_SHORTTEXT_4,\r\n" +
" a.GEN_SHORTTEXT_9,\r\n" +
" a.GEN_SHORTTEXT_10,\r\n" +
" a.CBCM_ENGLISH_NAME,\r\n" +
" a.CBCM_ARABIC_NAME,\r\n" +
" a.CBCM_EMIRATE_NAME,\r\n" +
" a.CBCM_PARTY_ID,\r\n" +
" a.CBCM_ACCOUNT_ID,\r\n" +
" a.RECORD_ID,\r\n" +
" a.DISPLAY_FLAG,\r\n" +
" a.DISPLAY_FLAG_GROUP,\r\n" +
" a.LONGITUDE,\r\n" +
" a.LATITUDE,\r\n" +
" a.NORMALIZED_ENGLISH_NAME,\r\n" +
" a.CBCM_PARTY_ENGLISH_NAME,\r\n" +
" a.CBCM_PARTY_ARABIC_NAME,\r\n" +
" a.MANUAL_UPDATE_FLAG,\r\n" +
" a.RULE_UPDATE_FLAG,\r\n" +
" a.BUSINESS_UPDATE_FLAG,\r\n" +
" a.EXCEL_UPDATE_FLAG\r\n" +
" \r\n" +
" FROM\r\n" +
" (\r\n" +
" SELECT\r\n" +
" *\r\n" +
" FROM\r\n" +
" (\r\n" +
" SELECT\r\n" +
" dqlist.*,\r\n" +
" score(1) AS rank\r\n" +
" FROM\r\n" +
" dq_list_hash_full dqlist\r\n" +
" WHERE\r\n" +
" contains(dqlist.dq_english_name,'!?1',1) > 0\r\n" +
" )\r\n" +
" ORDER BY\r\n" +
" rank DESC\r\n" +
" ) a\r\n" +
"", nativeQuery=true)
public List<DqListHashFullEntity> findByEngNameTwo(#Param("englishName") String englishName);
I know I am missing something here. Can anybody help me out please?
Edit 1 : I have added the JPA method with whole native query the englishName parameter is binded in two places.
SQL generated in the logs:
SELECT
a.EXTERNALID_ENC,
a.EXTERNALID,
a.TELNUMBER,
a.TELAREACODE,
a.DQ_ENGLISH_NAME,
a.DQ_ARABIC_NAME,
a.NAMEFIELD_1,
a.USAGETYPE,
a.STATE,
a.REGION,
a.LOCALITY,
a.ADDITIONALLOCALITYINFO,
a.GEN_TEXT_7,
a.GEN_SHORTTEXT_1,
a.GEN_SHORTTEXT_4,
a.GEN_SHORTTEXT_9,
a.GEN_SHORTTEXT_10,
a.CBCM_ENGLISH_NAME,
a.CBCM_ARABIC_NAME,
a.CBCM_EMIRATE_NAME,
a.CBCM_PARTY_ID,
a.CBCM_ACCOUNT_ID,
a.RECORD_ID,
a.DISPLAY_FLAG,
a.DISPLAY_FLAG_GROUP,
a.LONGITUDE,
a.LATITUDE,
a.NORMALIZED_ENGLISH_NAME,
a.CBCM_PARTY_ENGLISH_NAME,
a.CBCM_PARTY_ARABIC_NAME,
a.MANUAL_UPDATE_FLAG,
a.RULE_UPDATE_FLAG,
a.BUSINESS_UPDATE_FLAG,
a.EXCEL_UPDATE_FLAG
FROM
(
SELECT
*
FROM
(
SELECT
dqlist.*,
score(1) AS rank
FROM
dq_list_hash_full dqlist
WHERE
contains(dqlist.dq_english_name,'definescore(fuzzy(?1, 1, 6, weight),relevance)',1) > 0
UNION
SELECT
dqlist.*,
score(1) AS rank
FROM
dq_list_hash_full dqlist
WHERE
contains(dqlist.dq_english_name, '!Bhularam' ,1) > 0
)
ORDER BY
rank DESC
) a
It should work by replacing '?1' with ?
So all you have to do is remove the 1 and the '. You can work with multiple parameters by putting multiple ? There's no need to number or escape them
The Query should be like this
SELECT dqlist,score(1) AS rank FROM dq_list_hash_full dqlist WHERE contains(dqlist.dq_english_name,'definescore(fuzzy('?1', 1, 6, weight),relevance)',1) > 0
the .* is not needed here
then before exceuting the query you need to set the param as
query.setParameter(1, "ABC").getResultList();
Try using :1
SELECT dqlist,score(1) AS rank FROM dq_list_hash_full dqlist WHERE
contains(dqlist.dq_english_name,'definescore(fuzzy(:1, 1, 6,
weight),relevance)',1) > 0
This should work
try :1 instead of ?1. It will work.
After a struggle I finally able to come up with a solution. I have use the '||' operator as it is used for String concatenation in Oracle. So my solution is:
SELECT dqlist,score(1) AS rank FROM dq_list_hash_full dqlist WHERE contains(dqlist.dq_english_name,'definescore(fuzzy('||?1||', 1, 6, weight),relevance)',1) > 0

Calculate new release time for files

We have some code that checks each incoming file against 3 different criteria before processing (Not a weekend, not after 6pm, not a holiday). This being said, I need to figure out how to have it check for a half hour now (bolded part). I have tried adding a + mRelease > 30 as well as AND mRelease > 30 and both have failed. I have been altering this line
Do While (WeekDay(dRelease) = 1) OR (WeekDay(dRelease) = 7) OR (UBound(fHoliday) > -1) OR (tRelease >17)
Here is the code currently in place:
result = ""
dRelease = Now
tRelease = CStr(Hour(Now))
mRelease = CStr(Minute(Now))
aHoliday = Array("01/02/2017","01/16/2017","05/29/2017","07/04/2017","09/04/2017","10/09/2017","11/23/2017","11/24/2017","12/25/2017","12/26/2017")
dNow = CStr(DatePart("m",Date)) + "/" + CStr(DatePart("d",Date)) + "/" + CStr(DatePart("yyyy",Date))
dMonth = "0" + CStr(Month(dRelease))
dDay = "0" + CStr(Day(dRelease))
dYear = CStr(Year(dRelease))
fHoliday = Filter(aHoliday,Right(dMonth,2) + "/" + Right(dDay,2) + "/" + dYear)
'fHoliday = Filter(aHoliday,dNow)
'result = UBound(fHoliday)
'result = Left(dRelease,10)
'result = CStr(DatePart("m",Date)) + "/" + CStr(DatePart("d",Date)) + "/" + CStr(DatePart("yyyy",Date))
'While release date is a weekend, or release date is a holiday
Do While (WeekDay(dRelease) = 1) OR (WeekDay(dRelease) = 7) OR (UBound(fHoliday) > -1) OR (tRelease >17)
'increase release date by 1
dRelease = dRelease + 1
'result = dRelease
'check for holiday
dMonth = "0" + CStr(Month(dRelease))
dDay = "0" + CStr(Day(dRelease))
dYear = CStr(Year(dRelease))
'fHoliday = Filter(aHoliday,Left(dRelease,10))
fHoliday = Filter(aHoliday,Right(dMonth,2) + "/" + Right(dDay,2) + "/" + dYear)
tRelease = 00
Loop
'Format the release date to the Esker deferred date/time standard.
dMonth = "0" + CStr(Month(dRelease))
dDay = "0" + CStr(Day(dRelease))
dYear = CStr(Year(dRelease))
dtCurrent = Right(dMonth,2) + "/" + Right(dDay,2) + "/" + dYear
If dRelease > Now Then
tRelease = "00:" + mRelease
Else
tRelease = CStr(Hour(Now)) + ":" + CStr(Minute(Now))
End If
result = dtCurrent + " " + tRelease
Change this:
Do While (WeekDay(dRelease) = 1) OR (WeekDay(dRelease) = 7) OR (UBound(fHoliday) > -1) OR (tRelease >17)
...
Loop
into this:
If (WeekDay(dRelease) = 1) Or (WeekDay(dRelease) = 7) Or (UBound(fHoliday) > -1) Or (Time > CDate("16:30")) Then
...
End If

4x4 Fixed point matrix multiplication doesn't work

I have this function which concatenates two matrices:
out->_11 = MAT_MUL(b->_11, a->_11) + MAT_MUL(b->_21, a->_12) + MAT_MUL(b->_31, a->_13) + MAT_MUL(b->_41, a->_14);
out->_12 = MAT_MUL(b->_12, a->_11) + MAT_MUL(b->_22, a->_12) + MAT_MUL(b->_32, a->_13) + MAT_MUL(b->_42, a->_14);
out->_13 = MAT_MUL(b->_13, a->_11) + MAT_MUL(b->_23, a->_12) + MAT_MUL(b->_33, a->_13) + MAT_MUL(b->_43, a->_14);
out->_14 = MAT_MUL(b->_14, a->_11) + MAT_MUL(b->_24, a->_12) + MAT_MUL(b->_34, a->_13) + MAT_MUL(b->_44, a->_14);
out->_21 = MAT_MUL(b->_11, a->_21) + MAT_MUL(b->_21, a->_22) + MAT_MUL(b->_31, a->_23) + MAT_MUL(b->_41, a->_24);
out->_22 = MAT_MUL(b->_12, a->_21) + MAT_MUL(b->_22, a->_22) + MAT_MUL(b->_32, a->_23) + MAT_MUL(b->_42, a->_24);
out->_23 = MAT_MUL(b->_13, a->_21) + MAT_MUL(b->_23, a->_22) + MAT_MUL(b->_33, a->_23) + MAT_MUL(b->_43, a->_24);
out->_24 = MAT_MUL(b->_14, a->_21) + MAT_MUL(b->_24, a->_22) + MAT_MUL(b->_34, a->_23) + MAT_MUL(b->_44, a->_24);
out->_31 = MAT_MUL(b->_11, a->_31) + MAT_MUL(b->_21, a->_32) + MAT_MUL(b->_31, a->_33) + MAT_MUL(b->_41, a->_34);
out->_32 = MAT_MUL(b->_12, a->_31) + MAT_MUL(b->_22, a->_32) + MAT_MUL(b->_32, a->_33) + MAT_MUL(b->_42, a->_34);
out->_33 = MAT_MUL(b->_13, a->_31) + MAT_MUL(b->_23, a->_32) + MAT_MUL(b->_33, a->_33) + MAT_MUL(b->_43, a->_34);
out->_34 = MAT_MUL(b->_14, a->_31) + MAT_MUL(b->_24, a->_32) + MAT_MUL(b->_34, a->_33) + MAT_MUL(b->_44, a->_34);
out->_41 = MAT_MUL(b->_11, a->_41) + MAT_MUL(b->_21, a->_42) + MAT_MUL(b->_31, a->_43) + MAT_MUL(b->_41, a->_44);
out->_42 = MAT_MUL(b->_12, a->_41) + MAT_MUL(b->_22, a->_42) + MAT_MUL(b->_32, a->_43) + MAT_MUL(b->_42, a->_44);
out->_43 = MAT_MUL(b->_13, a->_41) + MAT_MUL(b->_23, a->_42) + MAT_MUL(b->_33, a->_43) + MAT_MUL(b->_43, a->_44);
out->_44 = MAT_MUL(b->_14, a->_41) + MAT_MUL(b->_24, a->_42) + MAT_MUL(b->_34, a->_43) + MAT_MUL(b->_44, a->_44);
MAT_MUL looks like this:
#define MAT_MUL(o1,o2) ((GLfixed)((long)(o1)*(long)(o2))>>16)
The odd thing is that it doesn't work with fixed point values but with float values (MAT_MUL(o1,o2) (o1)*(o2) in this case). I traced the error down to this bit of code.
Any ideas? Thanks

How to jump forward/backward from Xcode split window?

I used to split my Xcode window to 4 sub windows (not popup). I wonder if there's shortcut key to move cursor from one sub window to another ?
+++++++++++++++++++++++++++++
+ + + +
+ G / + F1 + F2 +
+ r F + + +
+ o i +++++++++++++++++++++++
+ u l + + +
+ p e + F3 + F4 +
+ + + +
+++++++++++++++++++++++++++++

Resources