| hermann on Fri, 24 May 2024 22:37:42 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Making use of "GP in your browser" questions |
On 2024-05-24 13:48, hermann@stamm-wilbrandt.de wrote:
Questions:
1) is there some doc on how to correctly make use of
function myevalm(s) { return
Module.ccall("gp_embedded","string",["string"],[s]); }
in browser JavaScript?
Bill pointed me to a wrong file location in directory structure. This works: hermann@j4105:~$ tree gp gp ├── PARI_GP Development Headquarters_files │ ├── gp-sta.js │ ├── gp-sta.wasm │ ├── Logo_PARI-GP_Couleurs_L150px.png │ └── pari.css └── PARI_GP Development Headquarters.html 1 directory, 5 files hermann@j4105:~$
I did simplify the webpage further and further until I reached only 24 lines.2) Is it OK to use https://pari.math.u-bordeaux.fr/gpwasm/gp-sta.wasm in own webpages for using myevalm() ?
Then I realized that I run into CORS issues. So I did need to copy gp-sta.js and gp-sta.wasm from https://pari.math.u-bordeaux.fr/gpjswasm/ and store them locally to minimal.html: $ ssh web23.web138@stamm-wilbrandt.de ls -l httpdocs/gp web23.web138@stamm-wilbrandt.de's password: total 13828 -rw-r--r-- 1 web23.web138 psacln 105545 24. Mai 22:07 gp-sta.js -rw-r--r-- 1 web23.web138 psacln 14047724 24. Mai 22:07 gp-sta.wasm -rw-r--r-- 1 web23.web138 psacln 1127 24. Mai 22:17 minimal.html $ That really works, you can try: https://stamm-wilbrandt.de/gp/minimal.html ??primes results in Help: https://pari.math.u-bordeaux.fr/dochtml/help-stable/primes. ?primes gives help in browser console:primes(n): returns the vector of the first n primes (integer), or the primes in gp-sta.js:1:15229
interval n = [a,b]. gp-sta.js:1:15229 <empty string> gp-sta.js:1:15229Input [p|p<-primes([2,100]),p%4==1] and then pressing "eval" button results in:
%4 = [5, 13, 17, 29, 37, 41, 53, 61, 73, 89, 97]The big question is, whether I am allowed to store gp-sta.js and gp-sta.wasm on my website?
The more important question is whether JSCAD (JavaScript) script allows to fetch
https://pari.math.u-bordeaux.fr/gpjswasm/gp-sta.jsby injecting appropriate CORS headers, and thus not requiring that file to be stored on https://jscad.app
Regards,
Hermann.
P.S:
Just because minimal.html is so small ...
<pre id="output"></pre>
<textarea id="code input"></textarea>
<button type="button" id="loading" onclick="eval()">eval</button>
<script type="text/javascript">
var input = document.getElementById("code input");
var output = document.getElementById("output");
var but = document.getElementById("loading");
but.setAttribute("disabled",true);
var initonce = false;
function mystart() { myinit(); initonce = true;
but.removeAttribute("disabled"); }
var Module = { noInitialRun: true, onRuntimeInitialized: mystart };
function myinit() { Module.ccall("gp_embedded_init",null,["number",
"number"],[4000000,1000000000]); }
function myevalm(s) { return Module.ccall("gp_embedded",
"string",["string"],[s]); }
function evalgp(x) {
var s = myevalm(x);
if (s == "retry.") { setTimeout(function (){ evalgp(x); }, 500); }
else { output.innerHTML = s; }
}
function eval() { if (initonce) { evalgp(input.value) } }
</script>
<script async="" type="text/javascript" src="gp-sta.js"></script>