[comp.sys.apollo] cc

tim@merlin.bhpmrl.oz (Tim Monks) (07/20/89)

I am trying to port some C and Fortran programs from Silicon Graphics
(running Irix 3.1 ~ Sys V + enhancements) to a DN10000 under SR10.1 (BSD)
and have come up with two basic problems :

(i) C 

Consider the following C segment :

	#include <stdio.h>

	main()

	{

		double	x[1000];

		x[0] = 1.00;
		x[999] = -1.0;
		fprintf(stdout,"%lf, %lf \n",x[0], x[999]);
		fprintf(stdout,"OK. \n");
		fflush(stdout);
	}

x is put onto the stack, so as I increase the size of this array I will get
a run time error :
	Warning #123 Function needs ... bytes of stack which exceeds 
	maximum stack size of 524224.
I've been told that to get the array put on the heap I can either declare
it as global or use malloc. I don't want to do either (mainly because the
SG version doesn't need it) but also I don't want to mess around with 1D 
pointers when doing lots of indexing of large 2D arrays (yes I am new to C)
Are there any other ways of getting around the problem ?


(ii) Fortran

Again a piece of code :

	parameter (N=1000)
	real*8 x(N)

	x(1) = 1.00
	x(N) = N
	write(6,*) x(1), x(N)
	write(6,*) 'OK'
	end

The size of the fortran binary is proportional to N !!!

			N       	 Image size
			1000		    32 273
			10000		   104 305
			100000		   824 305
			1000000		 8 024 305
			10000000	80 024 305 (bytes)
			100000000	compiler failed 

What gives ? - what am I doing wrong ?
-- 
Dr. Tim Monks                                

Image Processing & Data Analysis Group   |   (direct) +61-3-566-7448
BHP Melbourne Research Laboratories      |   (switch) +61-3-560-7066
245 Wellington Rd, Mulgrave, 3170,       |   (fax)    +61-3-561-6709
AUSTRALIA                                |   (EMAIL)  tim@merlin.bhpmrl.oz