영어프랑스어스페인어

Ad


온웍스 파비콘

funcalc - 클라우드에서의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 funcalc를 실행하세요.

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 funcalc 명령입니다.

프로그램:

이름


funcalc - Funtools 계산기(이진 테이블용)

개요


funcalc [-n] [-a 인수 문자열] [-e expr] [-f 파일] [-l 링크] [-p prog] [오이름 [열]]

옵션


-a argstr # 컴파일된 프로그램에 전달할 사용자 인수
-e expr # funcalc 표현식
-f file # funcalc 표현식이 포함된 파일
-l libs # 링크 명령에 추가할 libs
-n # 컴파일 및 실행 대신 생성된 코드를 출력합니다.
-p prog # 명명된 프로그램 생성, 실행 없음
-u # 변수가 선언되지 않으면 죽습니다(자동 선언하지 않음)

기술


funcalc 임의의 수식을 구성할 수 있는 계산기 프로그램입니다.
Funtools 테이블(FITS 바이너리 테이블 또는 원시 이벤트)의 열에서 컴파일되고 실행됩니다.
파일). 이는 사용자가 제공한 표현식을 템플릿 C 프로그램에 통합한 다음 작동합니다.
프로그램을 컴파일하고 실행합니다. funcalc 표현식은 C 명령문이지만 일부는
중요한 단순화(예: 변수 자동 선언)가 지원됩니다.

funcalc 표현식은 세 가지 방법으로 지정할 수 있습니다. 명령줄에서 -e
[표현] 스위치, 다음을 사용하는 파일에서 -f [파일] 스위치 또는 stdin에서(둘 중 하나도 아닌 경우) -e
...도 아니다 -f 지정되어 있습니다). 물론 다음을 포함하는 파일 funcalc 표현은 다음에서 읽을 수 있습니다.
표준 입력

각 호출은 funcalc 입력 Funtools 테이블 파일을 다음으로 지정해야 합니다.
첫 번째 명령줄 인수. 출력 Funtools 테이블 파일은 두 번째 선택 사항입니다.
논쟁. 출력 FITS 파일이 생성되는 경우에만 필요합니다(예:
전에, funcalc 표현식은 값만 인쇄하며 출력 파일은 필요하지 않습니다.) 입력과 출력의 경우
파일이 둘 다 지정되면 세 번째 선택적 인수는 열 목록을 지정할 수 있습니다.
활성화 (사용 FunColumnActivate()). 참고 funcalc 여부를 결정합니다.
출력의 유무에 따라 출력 파일을 작성하기 위한 코드 생성
파일 인수.

A funcalc 표현식은 테이블의 각 행에서 실행되며 하나 이상의 C로 구성됩니다.
해당 행의 열에 대해 작동하는 명령문(임시 변수 사용 가능)
표현식 내에서 다음 열을 참조합니다. current C 구조체를 사용하는 행
구문 똥개-[colname]>(예: cur->x, cur->pha 등) 로컬 스칼라 변수를 정의할 수 있습니다.
표현식의 시작 부분에 C 선언을 사용하거나 그렇지 않으면 정의할 수 있습니다.
자동으로 funcalc (double 유형이어야 함). 따라서 예를 들어 x 열을 교체하면
테이블의 y는 다음 중 하나를 사용하여 수행될 수 있습니다. funcalc
표현:

이중 온도;
온도 = 현재->x;
현재->x = 현재->y;
현재->y = 온도;

또는 :

온도 = 현재->x;
현재->x = 현재->y;
현재->y = 온도;

이 표현식이 다음과 같은 명령을 사용하여 실행되는 경우:

funcalc -f swap.expr itest.ev otest.ev

결과 파일에는 x 및 y 열의 값이 바뀌게 됩니다.

기본적으로 열에 대한 변수의 데이터 유형은 해당 열의 데이터 유형과 동일합니다.
파일에 저장된 열입니다. 이는 첫 번째 항목에 ":[dtype]"을 추가하여 변경할 수 있습니다.
해당 열에 대한 참조입니다. 위의 예에서 x와 y를 double로 출력하려면,
유형 'D'를 명시적으로 지정하십시오.

온도 = 현재->x:D;
현재->x = 현재->y:D;
현재->y = 온도;

데이터 유형 지정자는 TFORM을 사용하여 열을 정의하기 위한 표준 FITS 테이블 구문을 따릅니다.

· A: ASCII 문자

· B: 부호 없는 8비트 문자

· I: 서명된 16비트 정수

· U: 부호 없는 16비트 정수(표준 FITS 아님)

· J: 서명된 32비트 정수

· V: 부호 없는 32비트 int(표준 FITS 아님)

· E: 32비트 부동 소수점

· D: 64비트 부동 소수점

· X: 비트(문자 배열로 처리됨)

열에 대한 첫 번째 참조에만 명시적 데이터 유형이 포함되어야 합니다.
지정자.

물론 컬럼의 데이터 유형을 올바르게 처리하는 것이 중요합니다. 중 하나
오류의 가장 빈번한 원인 funcalc 프로그래밍은 잘못된 데이터를 암묵적으로 사용하는 것입니다.
표현식의 열에 대한 유형입니다. 예를 들어 계산은 다음과 같습니다.

dx = (cur->x - cur->y)/(cur->x + cur->y);

일반적으로 부동 소수점 연산을 사용하여 수행해야 합니다. x와 y가 있는 경우
열은 정수입니다. 이는 명시적 구문을 사용하여 열을 double로 읽어서 수행할 수 있습니다.
유형 사양:

dx = (현재->x:D - 현재->y:D)/(현재->x + 현재->y);

또는 다음 표현식에서 C 유형 캐스팅을 사용하여 수행할 수 있습니다.

dx = ((이중)cur->x - (이중)cur->y)/((이중)cur->x + (이중)cur->y);

현재 행의 열에 액세스하는 것 외에도
너무 이른 다음을 사용하는 행 이전-[열 이름]> 및 다음 것 다음을 사용하는 행 다음-[열 이름]>. 참고하세요
if 이전-[열 이름]>은 funcalc 표현식의 첫 번째 행은 다음과 같습니다.
처리됨. 만약에 다음-[열 이름]>은 funcalc 표현식, 맨 마지막 행
처리되지 않습니다. 이런 식으로, 이전다음 것 항상 유효한 행을 가리키는 것이 보장됩니다.
예를 들어, 현재 x 열과 이전 y 열의 값을 출력하려면,
C fprintf 함수를 사용하십시오. funcalc 표현:

fprintf(stdout, "%d %d\n", cur->x, prev->y);

동일한 열을 사용하여 새 열을 지정할 수 있습니다. 똥개-[colname]> 열을 추가하는 구문
유형(및 선택적 tlmin/tlmax/binsiz 지정자)은 콜론으로 구분됩니다. 예를 들어,
cur->avg:D는 double 유형의 새 열을 정의합니다. 유형 지정자는 다음과 동일합니다.
위에서 기존 열에 대한 새 데이터 유형을 지정하는 데 사용되었습니다.

예를 들어 x와 y의 평균값인 새 열을 생성하고 출력하려면
열에는 새로운 "평균" 열을 ​​정의할 수 있습니다.

현재->평균:D = (현재->x + 현재->y)/2.0

마지막 ';' 한 줄 표현식에는 필요하지 않습니다.

FITS TFORM 데이터 유형 지정과 마찬가지로 열 데이터 유형 지정자가 앞에 올 수 있습니다.
숫자 개수로 배열을 정의합니다. 예를 들어 "10I"는 10개의 짧은 정수로 구성된 벡터, "2E"를 의미합니다.
두 개의 단정밀도 부동 소수점 등을 의미합니다. 새 열은 한 번만 정의하면 됩니다.
funcalc 표현식 이후에는 유형을 다시 지정하지 않고도 사용할 수 있습니다. 이것
열 배열의 요소에 대한 참조를 포함합니다.

cur->avg[0]:2D = (cur->x + cur->y)/2.0;
현재->평균[1] = (현재->x - 현재->y)/2.0;

'X'(비트) 데이터 유형은 차원(numeric_count/8)의 char 배열로 처리됩니다. 즉,
16X는 2바이트 문자 배열로 처리됩니다. 각 8비트 배열 요소는 개별적으로 액세스됩니다.

현재->stat[0]:16X = 1;
현재->stat[1] = 2;

여기서는 MSB가 16로 설정되고 LSB가 1로 설정된 2비트 열이 생성됩니다.

기본적으로 처리된 모든 행은 지정된 출력 파일에 기록됩니다. 당신이 원한다면
특정 행 작성을 건너뛰고, 끝에서 C "continue" 문을 실행하기만 하면 됩니다.
funcalc 표현식 직후에 행 쓰기가 수행되므로
표현식이 실행됩니다. 예를 들어 평균이 다음과 같은 행 쓰기를 건너뛰려면
현재 x 값:

cur->avg[0]:2D = (cur->x + cur->y)/2.0;
현재->평균[1] = (현재->x - 현재->y)/2.0;
if( 현재->평균[0] == 현재->x)
계속;

출력 파일 인수가 지정되지 않은 경우 funcalc 명령줄, 출력 파일이 없습니다.
열렸으며 행이 기록되지 않았습니다. 이는 단순히 출력을 인쇄하는 표현식에 유용합니다.
새 파일을 생성하는 대신 결과가 발생합니다.

fpv = (cur->av3:D-cur->av1:D)/(cur->av1+cur->av2:D+cur->av3);
fbv = cur->av2/(cur->av1+cur->av2+cur->av3);
fpu = ((double)cur->au3-cur->au1)/((double)cur->au1+cur->au2+cur->au3);
fbu = cur->au2/(double)(cur->au1+cur->au2+cur->au3);
fprintf(stdout, "%f\t%f\t%f\t%f\n", fpv, fbv, fpu, fbu);

위의 예에서는 명시적인 유형 지정("av" 열의 경우)과 유형을 모두 사용합니다.
모든 작업이 이중으로 수행되도록 캐스팅("au" 열용)
정도.

출력 파일을 지정하면 선택한 입력 테이블이 처리되어 행이 출력됩니다.
출력 파일에 복사됩니다. 출력 파일은 "stdout"으로 지정할 수 있습니다.
표준 출력에 출력 행을 쓰려면 출력 파일 인수가 다음과 같은 경우
전달되면 선택적 세 번째 인수를 전달하여 처리할 열을 지정할 수도 있습니다.

FITS 이진 테이블에서는 다른 FITS 확장을 모두 복사하는 것이 바람직한 경우가 있습니다.
출력 파일에도 적용됩니다. 이름에 '+' 기호를 추가하면 됩니다.
입력 파일 이름의 확장자. 보다 재미있는 관련 예를 들면.

funcalc 사용자가 지정한 표현식을 템플릿 C 프로그램에 통합하여 작동합니다.
tabcalc.c라고 합니다. 완성된 프로그램은 컴파일되어 실행됩니다. 변하기 쉬운
시작하는 선언 funcalc 표현식은 로컬 선언 섹션에 배치됩니다.
템플릿 메인 프로그램의 다른 모든 줄은 템플릿 기본 프로그램의
내부 처리 루프. 프로그램 생성의 기타 세부사항은 자동으로 처리됩니다. 을 위한
예를 들어, 열 지정자는 행 처리를 위한 C 구조체를 구축하기 위해 분석됩니다.
전달 FunColumnSelect() 그리고에서 사용 FunTableRowGet(). 알 수 없는 변수를 사용한 경우
표현식에서 컴파일 오류가 발생하면 프로그램 빌드가 다시 시도됩니다.
알 수 없는 변수를 double 유형으로 정의합니다.

일반적으로, funcalc 표현식 코드가 추가되었습니다. funcalc 행 처리 루프. 것이 가능하다
이 코드를 특수 지시문 안에 넣어 프로그램의 다른 부분에 코드를 추가하려면
형태 :

[지시문 이름]
... 코드는 여기에 있습니다 ...
end

지시문은 다음과 같습니다.

· 글로벌 메인 루틴 앞에 전역 공간에 코드와 선언을 추가합니다.

· 지방의 메인의 로컬 선언 바로 뒤에 선언(및 코드)을 추가하세요.

· 전에 기본 행 처리 루프에 들어가기 직전에 코드를 추가하세요.

· 시간 내에 기본 행 처리 루프를 종료한 직후에 코드를 추가하세요.

따라서 다음과 같은 funcalc 표현식은 전역 변수를 선언하고 서브루틴을 만듭니다.
기본 처리 루프 직전과 직후에 호출합니다.

글로벌
더블 v1, v2;
double init(void);
이중 마무리(더블 v);
end
전에
v1 = 초기화();
end
... v1을 사용한 계산으로 행을 처리합니다 ...
시간 내에
v2 = 종료(v1);
if( v2 < 0.0 ){
fprintf(stderr, "%g 처리 실패 -> %g\n", v1, v2);
출구(1);
}
end

다음과 같은 루틴 init ()끝() 위의 내용은 연결을 위해 생성된 프로그램에 전달됩니다.
를 사용하여 -l [링크 ��ħ ...] 스위치. 이 스위치로 지정된 문자열은 다음과 같습니다.
프로그램을 빌드하는 데 사용되는 링크 라인에 추가됩니다(funtools 라이브러리 이전). 을 위한
예를 들어, init ()끝() libmysubs.a 라이브러리에 있습니다.
/opt/special/lib 디렉토리에서는 다음을 사용합니다.

funcalc -l "-L/opt/special/lib -lmysubs" ...

사용자 인수는 문자열 인수를 사용하여 컴파일된 funcalc 프로그램에 전달될 수 있습니다.
"-a" 스위치. 문자열에는 모든 사용자 인수가 포함되어야 합니다. 예를 들어 통과하려면
정수 1과 2는 다음을 사용합니다.

funcalc -a "1 2" ...

인수는 내부 배열에 저장되며 ARGV(n)를 통해 문자열로 액세스됩니다.
매크로. 예를 들어 다음 표현식을 고려해보세요.

지방의
int pmin, pmax;
end

전에
pmin=atoi(ARRGV(삼));
pmax=atoi(ARRGV(삼));
end

if( (cur->pha >= pmin) && (cur->pha <= pmax) )
fprintf(stderr, "%d %d %d\n", cur->x, cur->y, cur->pha);

이 표현식은 pha 값이 있는 모든 행에 대해 x, y 및 pha 값을 인쇄합니다.
두 사용자 입력 값 사이:

funcalc -a '1 12' -f foo snr.ev'[cir 512 512 .1]'
+ 512 512 6
+ 512 512 8
+ 512 512 5
+ 512 512 5
+ 512 512 8

funcalc -a '5 6' -f foo snr.ev'[cir 512 512 .1]'
+ 512 512 6
+ 512 512 5
+ 512 512 5

인수의 개수가 올바른지 확인하는 것은 사용자의 책임입니다.
통과되었습니다. ARGV(n) 매크로는 요청된 인수가 제한을 벗어나는 경우 NULL을 반환합니다.
실제 args 수로, 맹목적으로 처리하면 일반적으로 SEGV가 발생합니다. 확인하다
인수 개수를 계산하려면 ARGC 매크로를 사용하세요.

지방의
긴 정수 시드=1;
이중 한계=0.8;
end

전에
if( ARGC >= 1 ) 시드 = atol(ARRGV(삼));
if( ARGC >= 2 ) 제한 = atof(ARRGV(삼));
srand48(씨앗);
end

if ( drand48() > 제한 ) 계속;

매크로 WRITE_ROW는 다음으로 확장됩니다. FunTableRowPut() 현재 행을 쓰는 호출입니다. 그것
행을 두 번 이상 쓰는 데 사용할 수 있습니다. 또한 NROW 매크로는 다음으로 확장됩니다.
현재 처리 중인 행 번호입니다. 이 두 매크로의 사용은 다음과 같습니다.
예:

if( cur->pha:I == cur->pi:I ) 계속;
a = cur->pha;
cur->pha = cur->pi;
현재->pi = a;
cur->AVG:E = (cur->pha+cur->pi)/2.0;
현재->NR:I = NROW;
if( NROW < 10 ) WRITE_ROW;

경우 -p [음식물] 스위치가 지정되면 표현식이 실행되지 않습니다. 오히려,
생성된 실행 파일은 나중에 사용할 수 있도록 지정된 프로그램 이름으로 저장됩니다.

경우 -n 스위치가 지정되면 표현식이 실행되지 않습니다. 오히려 생성된 코드는
stdout에 기록됩니다. 이는 뼈대 파일을 생성하려는 경우 특히 유용합니다.
자신만의 코드를 추가하거나 컴파일 오류를 확인해야 하는 경우. 댓글 참고하세요
출력 시작 부분에는 해당 프로그램을 빌드하는 데 필요한 컴파일러 명령이 제공됩니다.
플랫폼. (명령은 다음을 사용하기 때문에 플랫폼마다 변경될 수 있습니다.
다른 라이브러리, 컴파일러 스위치 등)

앞서 언급했듯이, funcalc 스칼라 변수를 자동으로 선언합니다(
double) 해당 변수가 사용되었지만 선언되지 않은 경우. 이 시설이 시행됩니다
funcalc.sed라는 sed 스크립트를 사용하여 컴파일러 출력을 처리하여
선언되지 않은 변수 오류입니다. 이 스크립트에는 적절한 오류가 포함되어 있습니다.
gcc와 Solaris, DecAlpha 및 SGI 플랫폼의 cc에 대한 정보입니다. 그걸 찾으면
스칼라 자동 선언이 플랫폼에서 작동하지 않습니다. 이 sed 스크립트를 확인하세요.
감지한 오류 메시지 중 일부를 추가하거나 편집해야 할 수도 있습니다.

어휘 분석을 유지하기 위해 funcalc (합리적으로) 간단한 표현을 선택했습니다.
C 주석, 공백 및 개행이 얼마나 정확하게 배치되는지에 대한 일부 제한 사항을 허용합니다.
생성된 프로그램에서 특히 선언된 지역 변수와 관련된 주석은
표현식의 시작 부분에(즉, 표현식이 아닌 현지...끝 블록)은 일반적으로 종료됩니다
로컬 선언이 아닌 내부 루프에서:

/* 이 주석은 잘못된 위치(예: 내부 루프)에서 종료됩니다 */
더블에이; /* 역시 잘못된 위치에 있음 */
/* 이것은 올바른 위치에 있을 것입니다(내부 루프) */
if( cur->x:D == cur->y:D ) 계속; /* 역시 올바른 위치에 */
a = 현재->x;
현재->x = 현재->y;
현재->y = a;
현재->평균:E = (현재->x+현재->y)/2.0;

마찬가지로, 공백과 개행 문자는 때때로 생략되거나 임의적인 것처럼 추가됩니다.
방법. 물론 이러한 문체상의 결함 중 어느 것도 텍스트의 정확성에 영향을 미치지 않습니다.
생성된 코드.

때문에 funcalc 전달된 데이터 파일을 사용하여 사용자 표현을 분석해야 합니다.
명령줄에서 입력 파일을 두 번 열고 읽어야 합니다. 프로그램 중에 한 번
생성 및 실행 중 한 번. 결과적으로 stdin을 사용할 수 없습니다.
입력 파일: funcalc 필터로 사용할 수 없습니다. 우리는 이 제한을 제거하는 것을 고려할 것입니다
나중에.

C 코멘트와 함께, funcalc 표현식에는 한 줄짜리 내부 주석이 있을 수 있습니다.
생성된 C 프로그램에 전달되지 않습니다. 이러한 내부 의견은 다음으로 시작합니다. #
문자를 입력하고 새 줄까지 계속합니다.

더블에이; # 이것은 생성된 C 파일로 전달되지 않습니다.
# 이것도 아니고
a = 현재->x;
현재->x = 현재->y;
현재->y = a;
/* 이 주석은 C 파일로 전달됩니다 */
현재->평균:E = (현재->x+현재->y)/2.0;

앞서 언급한 것처럼 입력 열은 일반적으로 내에서 사용되는 방식으로 식별됩니다.
내부 이벤트 루프. 칼럼을 읽고 싶은 경우가 드물지만
메인 루프 외부에서 처리합니다. 예를 들어 qsort는 정렬 시 열을 사용할 수 있습니다.
내부 루프 내에서 처리되지 않는 비교 루틴(따라서
읽을 열로 암시적으로 지정됨) 이러한 열을 다음에서 읽을 수 있도록 하려면
이벤트 루프를 사용하려면 명백한 예어. 이 키워드에 대한 인수는 다음과 같은 열을 지정합니다.
에 언급되지 않았더라도 입력 레코드 구조로 읽어야 합니다.
내부 루프. 예를 들어:

명시적인 파이파

pi 및 pha 열이 각 행에 대해 읽히지 않은 경우에도 읽혀지도록 합니다.
내부 이벤트 루프에서 처리됩니다. 그만큼 명백한 문은 어디에나 배치할 수 있습니다.

마지막으로 funcalc 현재는 FITS 이진 테이블과 관련된 표현식에 대해 작업하고 있습니다.
원시 이벤트 파일. 나중에 이미지 표현에 대한 지원 추가를 고려할 예정입니다.
지역사회에서 그러한 지원에 대한 요구가 있는 경우.

onworks.net 서비스를 사용하여 온라인으로 funcalc 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

  • 1
    통음
    통음
    SWIG는 소프트웨어 개발 도구입니다.
    C로 작성된 프로그램과
    다양한 고급 수준의 C++
    프로그래밍 언어. SWIG는 다음과 함께 사용됩니다.
    다른...
    SWIG 다운로드
  • 2
    WooCommerce Nextjs 반응 테마
    WooCommerce Nextjs 반응 테마
    React WooCommerce 테마,
    다음 JS, Webpack, Babel, Node 및
    GraphQL 및 Apollo를 사용한 Express
    고객. React의 WooCommerce 스토어(
    포함: 제품...
    WooCommerce Nextjs 반응 테마 다운로드
  • 3
    Archlabs_repo
    Archlabs_repo
    ArchLabs용 패키지 저장소 이것은
    가져올 수 있는 응용 프로그램

    https://sourceforge.net/projects/archlabs-repo/.
    그것은 OnWorks에서 호스팅되었습니다 ...
    archlabs_repo 다운로드
  • 4
    제퍼 프로젝트
    제퍼 프로젝트
    Zephyr 프로젝트는 새로운 세대입니다.
    실시간 운영체제(RTOS)
    여러 하드웨어 지원
    아키텍처. 그것은
    작은 크기의 커널...
    Zephyr 프로젝트 다운로드
  • 5
    SC콘
    SC콘
    SCons는 소프트웨어 구축 도구입니다.
    그것은에 대한 우수한 대안입니다
    고전적인 "만들기" 빌드 도구
    우리 모두는 알고 사랑합니다. 스콘은
    구현 ...
    SCons 다운로드
  • 6
    PSeInt
    PSeInt
    PSeInt는 의사 코드 해석기입니다.
    스페인어를 구사하는 프로그래밍 학생.
    주요 목적은 다음을 위한 도구가 되는 것입니다.
    기본을 배우고 이해하기
    개념...
    PSeInt 다운로드
  • 더»

Linux 명령

Ad