Paraboloid of revolution

Door 2ARC

Supporter (11)

afbeelding van 2ARC

14-08-2021, 17:22

Hi all,

I´m starting Calculus II this week and I´m trying to put a simple graph on screen 5
It´s a Paraboloid of revolution expressed as f(x, y) = x² + y²
This is how it looks like in BASIC:
https://imgur.com/a/FavVh71
https://imgur.com/a/RsBfMA1

Now in msx-c this error occurs:
https://imgur.com/a/2SBdiID

There is a #include "math.h" at the top of source file. Maybe function has another name? Or is at another header file? Search google for sqrt in msx-c returns standard c examples. I know msx-c is not really ANSI C but I would like not to use assembler if possible. Anyway, this is just for fun and to get knowledge.

Thanks in advance.

Aangemeld of registreer om reacties te plaatsen

Van enribar

Paragon (1137)

afbeelding van enribar

14-08-2021, 18:22

Simply, your version of MSX-C does not contain the complete libraries. Please update to the last version of MSX-C or skip to Fusion-C.

Van 2ARC

Supporter (11)

afbeelding van 2ARC

14-08-2021, 18:27

OK. Thank you.

Van 2ARC

Supporter (11)

afbeelding van 2ARC

14-08-2021, 18:35

Found this https://www.youtube.com/watch?v=WlOnX2uqRxE

It´s you, isnt it?

Van enribar

Paragon (1137)

afbeelding van enribar

15-08-2021, 10:06

I'm not the author of that tutorial but Eric Boez, see here:
https://www.ebsoft.fr/shop/en/19-fusion-c
That video is a good starting point :nishi:

Van 2ARC

Supporter (11)

afbeelding van 2ARC

16-08-2021, 20:00

Yes, it is. Thank you. I´ll dive into it soon.

Van 2ARC

Supporter (11)

afbeelding van 2ARC

18-08-2021, 16:24

Hi all,
Well, I know this might be well known, but just to sumarize what I found and to help anyone in the future (better jump directly into Fusion-C, I guess).
Maths functions are cumbersome in MSX-C, double and long (or XDOUBLE, SLONG) are not defined as types in the language like int, sqrt() is named xdsqrt(*ans, *number) and many more at mathmac.mac
Any way, this example shows what I mean. It seems when you call a math function the value at any pointer is cleanned, so I have to use a tmp variable. It worthed the fun, although.
P.s.: the includes are between < > not " "

#include "stdio.h"
#include "math.h"

main()
{
	/* 8 bytes long number in the form of a pointer */
	XDOUBLE a,b,ans,pi,tmp;
	/* Passing string formatted value to the pointer */
	atoxd(&a,"2.0");
	atoxd(&b,"3.0");
	atoxd(&pi,"3.141592");
	/**/
	printf("Number a = %3.2f\n",&a);
	printf("Number b = %3.2f\n",&b);	
	xdadd(&tmp,&a,&b);
	/* Square root*/
	xdsqrt(&ans,&a);
	printf("sqrt(a) = %3.2f\n",&ans);
	xdsqrt(&ans,&b);
	printf("sqrt(b) = %3.2f\n",&ans);
	/**/
	xdmul(&ans,&pi,&tmp);
	printf("5pi = %4.5f\n",&ans);
}