1 설명
이 문서에서는 libavutil 라이브러리에서 제공하는 몇 가지 일반 기능과 유틸리티에 대해 설명합니다.
2 구문
이 섹션에서는 FFmpeg 라이브러리 및 도구에서 사용하는 구문과 형식을 문서화합니다.
2.1 인용과 이스케이프
FFmpeg는 명시적으로 지정하지 않는 한 다음 인용 및 이스케이프 메커니즘을 채택합니다. 다음 규칙이 적용됩니다.
- ''' 및 '\'는 특수 문자입니다(각각 인용 및 이스케이프에 사용됨). 그 외에도 이스케이프 및 인용이 사용되는 특정 구문에 따라 다른 특수 문자가 있을 수 있습니다.
- 특수 문자 앞에 '\'를 붙여서 이스케이프합니다.
- '''' 사이에 포함된 모든 문자는 문자 그대로 구문 분석된 문자열에 포함됩니다. 따옴표 문자 ''' 자체는 따옴표로 묶을 수 없으므로 따옴표를 닫고 이스케이프해야 할 수도 있습니다.
- 이스케이프되거나 인용되지 않는 한 선행 및 후행 공백은 구문 분석된 문자열에서 제거됩니다.
채택된 쉘 언어의 구문에 따라 명령줄이나 스크립트를 사용할 때 두 번째 수준의 이스케이프를 추가해야 할 수도 있습니다.
libavutil/avstring.h에 정의된 av_get_token 함수는 위에 정의된 규칙에 따라 인용되거나 이스케이프된 토큰을 구문 분석하는 데 사용할 수 있습니다.
FFmpeg 소스 트리의 도구 tools/ffescape를 사용하면 스크립트에서 문자열을 자동으로 인용하거나 이스케이프할 수 있습니다.
2.1.1 예
- ' 특수 문자가 포함된 Crime d'Amour 문자열을 이스케이프합니다.
Crime d\'Amour - 위의 문자열에는 따옴표가 포함되어 있으므로 인용할 때 '를 이스케이프 처리해야 합니다.
'Crime d'\''Amour' - 인용을 사용하여 선행 또는 후행 공백을 포함합니다.
' this string starts and ends with whitespaces ' - 이스케이프 처리와 인용을 함께 혼합할 수 있습니다.
' The string '\'string\'' is a string ' - 리터럴 '\'를 포함하려면 이스케이프 또는 인용을 사용할 수 있습니다.
'c:\foo' can be written as c:\\foo
2.2 날짜
허용되는 구문은 다음과 같습니다.
[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
now
값이 "now"이면 현재 시간이 걸립니다.
Z가 추가되지 않는 한 시간은 현지 시간이며, 이 경우 UTC로 해석됩니다. 연월일 부분을 지정하지 않으면 현재 연월일을 사용합니다.
2.3 기간
기간을 표현하는 데 허용되는 두 가지 구문이 있습니다.
[-][HH:]MM:SS[.m...]
HH는 시간을 나타내고, MM은 최대 2자리의 분, SS는 최대 2자리의 초를 나타냅니다. 끝의 m은 SS의 10진수 값을 나타냅니다.
또는
[-]S+[.m...][s|ms|us]
S는 선택적 소수 부분 m을 사용하여 초 수를 나타냅니다. 선택적 리터럴 접미사 's', 'ms' 또는 'us'는 값을 각각 초, 밀리초 또는 마이크로초로 해석함을 나타냅니다.
두 표현식 모두에서 선택적 '-’는 음수 기간을 나타냅니다.
2.3.1 예
다음 예는 모두 유효한 기간입니다.
- '55’
55초
- '0.2’
0.2초
- '200ms’
200밀리초, 즉 0.2초
- '200000us’
200000 마이크로초, 즉 0.2초
- '12:03:45’
12시간 03분 45초
- '23.189’
23.189초
2.4 비디오 크기
소스 비디오의 크기를 지정합니다. 너비x높이 형식의 문자열이거나 크기 약어의 이름일 수 있습니다.
다음 약어가 인식됩니다.
- 'ntsc’
720x480
- 'pal’
720x576
- 'qntsc’
352x240
- 'qpal’
352x288
- 'sntsc’
640x480
- 'spal’
768x576
- 'film’
352x240
- 'ntsc-film’
352x240
- 'sqcif’
128x96
- 'qcif’
176x144
- 'cif’
352x288
- '4cif’
704x576
- '16cif’
1408x1152
- 'qqvga’
160x120
- 'qvga’
320x240
- 'vga’
640x480
- 'svga’
800x600
- 'xga’
1024x768
- 'uxga’
1600x1200
- 'qxga’
2048x1536
- 'sxga’
1280x1024
- 'qsxga’
2560x2048
- 'hsxga’
5120x4096
- 'wvga’
852x480
- 'wxga’
1366x768
- 'wsxga’
1600x1024
- 'wuxga’
1920x1200
- 'woxga’
2560x1600
- 'wqsxga’
3200x2048
- 'wquxga’
3840x2400
- 'whsxga’
6400x4096
- 'whuxga’
7680x4800
- 'cga’
320x200
- 'ega’
640x350
- 'hd480’
852x480
- 'hd720’
1280x720
- 'hd1080’
1920x1080
- '2k’
2048x1080
- '2kflat’
1998x1080
- '2kscope’
2048x858
- '4k’
4096x2160
- '4kflat’
3996x2160
- '4kscope’
4096x1716
- 'nhd’
640x360
- 'hqvga’
240x160
- 'wqvga’
400x240
- 'fwqvga’
432x240
- 'hvga’
480x320
- 'qhd’
960x540
- '2kdci’
2048x1080
- '4kdci’
4096x2160
- 'uhd2160’
3840x2160
- 'uhd4320’
7680x4320
2.5 비디오 속도
초당 생성되는 프레임 수로 표시되는 비디오의 프레임 속도를 지정합니다. 이는 frame_rate_num/frame_rate_den 형식의 문자열, 정수, 부동 소수점 숫자 또는 유효한 비디오 프레임 속도 약어여야 합니다.
다음 약어가 인식됩니다.
- 'ntsc’
30000/1001
- 'pal’
1월 25일
- 'qntsc’
30000/1001
- 'qpal’
1월 25일
- 'sntsc’
30000/1001
- 'spal’
1월 25일
- 'film’
24/1
- 'ntsc-film’
24000/1001
2.6 비율
비율은 표현식으로 표현하거나 분자:분모 형식으로 표현할 수 있습니다.
무한(1/0) 또는 음수 값을 갖는 비율은 유효한 것으로 간주되므로 해당 값을 제외하려면 반환된 값을 확인해야 합니다.
정의되지 않은 값은 "0:0" 문자열을 사용하여 표현할 수 있습니다.
2.7 색상
아래에 정의된 색상 이름(대소문자 구분 안 함) 또는 [0x|#]RRGGBB[AA] 시퀀스일 수 있으며 그 뒤에는 @ 및 알파 구성 요소를 나타내는 문자열이 올 수 있습니다.
알파 구성요소는 불투명도 값을 나타내는 0.0과 1.0 사이의 16진수 또는 10진수 또는 "0x"로 구성된 문자열일 수 있습니다('0x00' 또는 '0.0'은 완전히 투명함을 의미하고, '0xff' 또는 '1.0'). 완전히 불투명). 알파 구성 요소가 지정되지 않으면 '0xff'로 간주됩니다.
'random'이라는 문자열을 사용하면 임의의 색상이 생성됩니다.
다음과 같은 색상 이름이 인식됩니다.
- 'AliceBlue’
0xF0F8FF
- 'AntiqueWhite’
0xFAEBD7
- 'Aqua’
0x00FFFF
- 'Aquamarine’
0x7FFFD4
- 'Azure’
0xF0FFFF
- 'Beige’
0xF5F5DC
- 'Bisque’
0xFFE4C4
- 'Black’
0x000000
- 'BlanchedAlmond’
0xFFEBCD
- 'Blue’
0x0000FF
- 'BlueViolet’
0x8A2BE2
- 'Brown’
0xA52A2A
- 'BurlyWood’
0xDEB887
- 'CadetBlue’
0x5F9EA0
- 'Chartreuse’
0x7FFF00
- 'Chocolate’
0xD2691E
- 'Coral’
0xFF7F50
- 'CornflowerBlue’
0x6495ED
- 'Cornsilk’
0xFFF8DC
- 'Crimson’
0xDC143C
- 'Cyan’
0x00FFFF
- 'DarkBlue’
0x00008B
- 'DarkCyan’
0x008B8B
- 'DarkGoldenRod’
0xB8860B
- 'DarkGray’
0xA9A9A9
- 'DarkGreen’
0x006400
- 'DarkKhaki’
0xBDB76B
- 'DarkMagenta’
0x8B008B
- 'DarkOliveGreen’
0x556B2F
- 'Darkorange’
0xFF8C00
- 'DarkOrchid’
0x9932CC
- 'DarkRed’
0x8B0000
- 'DarkSalmon’
0xE9967A
- 'DarkSeaGreen’
0x8FBC8F
- 'DarkSlateBlue’
0x483D8B
- 'DarkSlateGray’
0x2F4F4F
- 'DarkTurquoise’
0x00CED1
- 'DarkViolet’
0x9400D3
- 'DeepPink’
0xFF1493
- 'DeepSkyBlue’
0x00BFFF
- 'DimGray’
0x696969
- 'DodgerBlue’
0x1E90FF
- 'FireBrick’
0xB22222
- 'FloralWhite’
0xFFFAF0
- 'ForestGreen’
0x228B22
- 'Fuchsia’
0xFF00FF
- 'Gainsboro’
0xDCDCDC
- 'GhostWhite’
0xF8F8FF
- 'Gold’
0xFFD700
- 'GoldenRod’
0xDAA520
- 'Gray’
0x808080
- 'Green’
0x008000
- 'GreenYellow’
0xADFF2F
- 'HoneyDew’
0xF0FFF0
- 'HotPink’
0xFF69B4
- 'IndianRed’
0xCD5C5C
- 'Indigo’
0x4B0082
- 'Ivory’
0xFFFFF0
- 'Khaki’
0xF0E68C
- 'Lavender’
0xE6E6FA
- 'LavenderBlush’
0xFFF0F5
- 'LawnGreen’
0x7CFC00
- 'LemonChiffon’
0xFFFACD
- 'LightBlue’
0xADD8E6
- 'LightCoral’
0xF08080
- 'LightCyan’
0xE0FFFF
- 'LightGoldenRodYellow’
0xFAFAD2
- 'LightGreen’
0x90EE90
- 'LightGrey’
0xD3D3D3
- 'LightPink’
0xFFB6C1
- 'LightSalmon’
0xFFA07A
- 'LightSeaGreen’
0x20B2AA
- 'LightSkyBlue’
0x87CEFA
- 'LightSlateGray’
0x778899
- 'LightSteelBlue’
0xB0C4DE
- 'LightYellow’
0xFFFFE0
- 'Lime’
0x00FF00
- 'LimeGreen’
0x32CD32
- 'Linen’
0xFAF0E6
- 'Magenta’
0xFF00FF
- 'Maroon’
0x800000
- 'MediumAquaMarine’
0x66CDAA
- 'MediumBlue’
0x0000CD
- 'MediumOrchid’
0xBA55D3
- 'MediumPurple’
0x9370D8
- 'MediumSeaGreen’
0x3CB371
- 'MediumSlateBlue’
0x7B68EE
- 'MediumSpringGreen’
0x00FA9A
- 'MediumTurquoise’
0x48D1CC
- 'MediumVioletRed’
0xC71585
- 'MidnightBlue’
0x191970
- 'MintCream’
0xF5FFFA
- 'MistyRose’
0xFFE4E1
- 'Moccasin’
0xFFE4B5
- 'NavajoWhite’
0xFFDEAD
- 'Navy’
0x000080
- 'OldLace’
0xFDF5E6
- 'Olive’
0x808000
- 'OliveDrab’
0x6B8E23
- 'Orange’
0xFFA500
- 'OrangeRed’
0xFF4500
- 'Orchid’
0xDA70D6
- 'PaleGoldenRod’
0xEEE8AA
- 'PaleGreen’
0x98FB98
- 'PaleTurquoise’
0xAFEEEE
- 'PaleVioletRed’
0xD87093
- 'PapayaWhip’
0xFFEFD5
- 'PeachPuff’
0xFFDAB9
- 'Peru’
0xCD853F
- 'Pink’
0xFFC0CB
- 'Plum’
0xDDA0DD
- 'PowderBlue’
0xB0E0E6
- 'Purple’
0x800080
- 'Red’
0xFF0000
- 'RosyBrown’
0xBC8F8F
- 'RoyalBlue’
0x4169E1
- 'SaddleBrown’
0x8B4513
- 'Salmon’
0xFA8072
- 'SandyBrown’
0xF4A460
- 'SeaGreen’
0x2E8B57
- 'SeaShell’
0xFFF5EE
- 'Sienna’
0xA0522D
- 'Silver’
0xC0C0C0
- 'SkyBlue’
0x87CEEB
- 'SlateBlue’
0x6A5ACD
- 'SlateGray’
0x708090
- 'Snow’
0xFFFAFA
- 'SpringGreen’
0x00FF7F
- 'SteelBlue’
0x4682B4
- 'Tan’
0xD2B48C
- 'Teal’
0x008080
- 'Thistle’
0xD8BFD8
- 'Tomato’
0xFF6347
- 'Turquoise’
0x40E0D0
- 'Violet’
0xEE82EE
- 'Wheat’
0xF5DEB3
- 'White’
0xFFFFFF
- 'WhiteSmoke’
0xF5F5F5
- 'Yellow’
0xFFFF00
- 'YellowGreen’
0x9ACD32
2.8 채널 레이아웃
채널 레이아웃은 다중 채널 오디오 스트림에서 채널의 공간적 배치를 지정합니다. 채널 레이아웃을 지정하기 위해 FFmpeg는 특수 구문을 사용합니다.
개별 채널은 아래 표에 표시된 대로 ID로 식별됩니다.
- 'FL’
앞 왼쪽
- 'FR’
앞 오른쪽
- 'FC’
프론트 센터
- 'LFE’
낮은 빈도
- 'BL’
뒤 왼쪽
- 'BR’
오른쪽 뒤로
- 'FLC’
앞 중앙 왼쪽
- 'FRC’
앞 중앙 오른쪽
- 'BC’
뒤쪽 중앙
- 'SL’
왼쪽
- 'SR’
오른쪽
- 'TC’
상단 중앙
- 'TFL’
상단 앞 왼쪽
- 'TFC’
상단 전면 중앙
- 'TFR’
상단 앞 오른쪽
- 'TBL’
상단 뒤 왼쪽
- 'TBC’
상단 뒤 중앙
- 'TBR’
위쪽 뒤 오른쪽
- 'DL’
왼쪽으로 다운믹스
- 'DR’
오른쪽으로 다운믹스
- 'WL’
넓은 왼쪽
- 'WR’
넓은 오른쪽
- 'SDL’
바로 왼쪽을 둘러싸고
- 'SDR’
바로 오른쪽으로 둘러싸기
- 'LFE2’
저주파 2
표준 채널 레이아웃 구성은 다음 식별자를 사용하여 지정할 수 있습니다.
- 'mono’
FC
- 'stereo’
FL+FR
- '2.1’
FL+FR+LFE
- '3.0’
FL+FR+FC
- '3.0(back)’
FL+FR+BC
- '4.0’
FL+FR+FC+BC
- 'quad’
FL+FR+BL+BR
- 'quad(side)’
FL+FR+SL+SR
- '3.1’
FL+FR+FC+LFE
- '5.0’
FL+FR+FC+BL+BR
- '5.0(side)’
FL+FR+FC+SL+SR
- '4.1’
FL+FR+FC+LFE+BC
- '5.1’
FL+FR+FC+LFE+BL+BR
- '5.1(side)’
FL+FR+FC+LFE+SL+SR
- '6.0’
FL+FR+FC+BC+SL+SR
- '6.0(front)’
FL+FR+FLC+FRC+SL+SR
- '3.1.2’
FL+FR+FC+LFE+TFL+TFR
- 'hexagonal’
FL+FR+FC+BL+BR+BC
- '6.1’
FL+FR+FC+LFE+BC+SL+SR
- '6.1’
FL+FR+FC+LFE+BL+BR+BC
- '6.1(front)’
FL+FR+LFE+FLC+FRC+SL+SR
- '7.0’
FL+FR+FC+BL+BR+SL+SR
- '7.0(front)’
FL+FR+FC+FLC+FRC+SL+SR
- '7.1’
FL+FR+FC+LFE+BL+BR+SL+SR
- '7.1(wide)’
FL+FR+FC+LFE+BL+BR+FLC+FRC
- '7.1(wide-side)’
FL+FR+FC+LFE+FLC+FRC+SL+SR
- '5.1.2’
FL+FR+FC+LFE+BL+BR+TFL+TFR
- 'octagonal’
FL+FR+FC+BL+BR+BC+SL+SR
- 'cube’
FL+FR+BL+BR+TFL+TFR+TBL+TBR
- '5.1.4’
FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR
- '7.1.2’
FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR
- '7.1.4’
FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR
- '7.2.3’
FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2
- '9.1.4’
FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR
- 'hexadecagonal’
FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
- 'downmix’
DL+DR
- '22.2’
FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR
사용자 정의 채널 레이아웃은 '+'로 구분된 일련의 용어로 지정할 수 있습니다. 각 용어는 다음과 같습니다.
- 단일 채널의 이름(예: 'FL', 'FR', 'FC', 'LFE' 등). 각 채널에는 선택적으로 '@' 뒤에 맞춤 이름이 포함됩니다(예: 'FL@Left', 'FR @Right', 'FC@Center', 'LFE@Low_Frequency' 등)
표준 채널 레이아웃은 다음과 같이 지정할 수 있습니다.
- 단일 채널의 이름(예: 'FL', 'FR', 'FC', 'LFE' 등)
- 표준 채널 레이아웃의 이름(예: '모노', '스테레오', '4.0', '쿼드', '5.0' 등)
- 채널 수(10진수) 뒤에 'c'가 옵니다. 해당 채널 수에 대한 기본 채널 레이아웃을 생성합니다(av_channel_layout_default 함수 참조). 모든 채널 수에 기본 레이아웃이 있는 것은 아닙니다.
- 10진수로 표시된 채널 수 뒤에 'C'가 표시되어 지정된 수의 채널이 있는 알 수 없는 채널 레이아웃이 생성됩니다. 모든 채널 레이아웃 사양 문자열이 알 수 없는 채널 레이아웃을 지원하는 것은 아닙니다.
- "0x"로 시작하는 16진수 채널 레이아웃 마스크(libavutil/channel_layout.h의 AV_CH_* 매크로 참조)
libavutil 버전 53 이전에는 채널 수를 지정하는 후행 문자 "c"가 선택 사항이었지만 이제는 필수입니다. 채널 레이아웃 마스크는 십진수로도 지정할 수 있습니다("c" 또는 "c"가 뒤에 오지 않는 경우에만 해당). "씨").
libavutil/channel_layout.h에 정의된 av_channel_layout_from_string 함수도 참조하세요.
3 발현 평가
산술 표현식을 평가할 때 FFmpeg는 libavutil/eval.h 인터페이스를 통해 구현된 내부 수식 평가기를 사용합니다.
표현식에는 단항, 이항 연산자, 상수 및 함수가 포함될 수 있습니다.
두 표현식 expr1과 expr2를 결합하여 또 다른 표현식 "expr1;expr2"를 형성할 수 있습니다. expr1과 expr2는 차례로 평가되고 새 표현식은 expr2의 값으로 평가됩니다.
다음 이진 연산자를 사용할 수 있습니다: +, -, *, /, ^.
다음 단항 연산자를 사용할 수 있습니다: +, -.
일부 내부 변수는 중간 결과를 저장하고 로드하는 데 사용될 수 있습니다. 액세스할 내부 변수를 지정하기 위해 0에서 9까지 다양한 인덱스 인수와 함께 ld 및 st 함수를 사용하여 액세스할 수 있습니다.
다음 기능을 사용할 수 있습니다.
- abs(x)
x의 절대값을 계산합니다.
- acos(x)
x의 아크코사인을 계산합니다.
- asin(x)
x의 아크사인을 계산합니다.
- atan(x)
x의 아크탄젠트를 계산합니다.
- atan2(y, x)
y/x의 아크 탄젠트의 주요 값을 계산합니다.
- between(x, min, max)
x가 min보다 크거나 같고 max보다 작거나 같으면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
- bitand(x, y)
- bitor(x, y)
x와 y에 대한 비트 단위 및/또는 연산을 계산합니다.
x와 y의 평가 결과는 비트 연산을 실행하기 전에 정수로 변환됩니다.
정수로 변환하거나 부동 소수점으로 다시 변환하면 정밀도가 떨어질 수 있습니다. 큰 수(보통 2^53 이상)에 대한 예상치 못한 결과에 주의하세요.
- ceil(expr)
표현식 expr의 값을 가장 가까운 정수로 반올림합니다. 예를 들어 "ceil(1.5)"는 "2.0"입니다.
- clip(x, min, max)
최소값과 최대값 사이에 잘린 x 값을 반환합니다.
- cos(x)
x의 코사인을 계산합니다.
- cosh(x)
x의 쌍곡선 코사인을 계산합니다.
- eq(x, y)
x와 y가 동일하면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
- exp(x)
x의 지수를 계산합니다(E를 밑으로 하는 오일러 수).
- floor(expr)
표현식 expr의 값을 가장 가까운 정수로 반올림합니다. 예를 들어 "floor(-1.5)"는 "-2.0"입니다.
- gauss(x)
exp(-x*x/2) / sqrt(2*PI)에 해당하는 x의 가우스 함수를 계산합니다.
- gcd(x, y)
x와 y의 최대 공약수를 반환합니다. x와 y가 모두 0이거나 둘 중 하나 또는 둘 다 0보다 작으면 동작이 정의되지 않습니다.
- gt(x, y)
x가 y보다 크면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
- gte(x, y)
x가 y보다 크거나 같으면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
- hypot(x, y)
이 함수는 이름이 같은 C 함수와 유사합니다. 이는 "sqrt(x*x + y*y)", 즉 변의 길이가 x와 y인 직각 삼각형의 빗변 길이 또는 원점에서 점 (x, y)까지의 거리를 반환합니다.
- if(x, y)
x를 평가하고, 결과가 0이 아니면 y 평가 결과를 반환하고, 그렇지 않으면 0을 반환합니다.
- if(x, y, z)
x를 평가하고, 결과가 0이 아니면 y의 평가 결과를 반환하고, 그렇지 않으면 z의 평가 결과를 반환합니다.
- ifnot(x, y)
x를 평가하고, 결과가 0이면 y의 평가 결과를 반환하고, 그렇지 않으면 0을 반환합니다.
- ifnot(x, y, z)
x를 평가하고, 결과가 0이면 y 평가 결과를 반환하고, 그렇지 않으면 z 평가 결과를 반환합니다.
- isinf(x)
x가 +/-INFINITY이면 1.0을 반환하고, 그렇지 않으면 0.0을 반환합니다.
- isnan(x)
x가 NAN이면 1.0을 반환하고 그렇지 않으면 0.0을 반환합니다.
- ld(idx)
이전에 st(idx, expr)로 저장되었던 내부 변수의 값을 인덱스 idx로 불러옵니다. 이 함수는 로드된 값을 반환합니다.
- lerp(x, y, z)
x와 y 사이의 선형 보간을 z만큼 반환합니다.
- log(x)
x의 자연 로그를 계산합니다.
- lt(x, y)
x가 y보다 작으면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
- lte(x, y)
x가 y보다 작거나 같으면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
- max(x, y)
x와 y 사이의 최대값을 반환합니다.
- min(x, y)
x와 y 사이의 최소값을 반환합니다.
- mod(x, y)
x를 y로 나눈 나머지를 계산합니다.
- not(expr)
expr이 0이면 1.0을 반환하고, 그렇지 않으면 0.0을 반환합니다.
- pow(x, y)
x 상승된 y의 거듭제곱을 계산합니다. 이는 "(x)^(y)"와 같습니다.
- print(t)
- print(t, l)
loglevel l을 사용하여 표현식 t의 값을 인쇄합니다. l을 지정하지 않으면 기본 로그 수준이 사용됩니다. 인쇄된 표현식의 값을 반환합니다.
- random(idx)
0.0에서 1.0 사이의 의사 난수 값을 반환합니다. idx는 st(idx)로 미리 저장할 수 있는 시드/상태를 저장하는 데 사용되는 내부 변수의 인덱스입니다.
시드를 초기화하려면 인덱스 idx가 있는 내부 변수에 시드 값을 64비트 부호 없는 정수로 저장해야 합니다.
예를 들어, 인덱스 0의 내부 변수에 값 42의 시드를 저장하고 몇 가지 임의의 값을 인쇄하려면 다음을 수행하십시오.
st(0,42); print(random(0)); print(random(0)); print(random(0)) - randomi(idx, min, max)
min과 max 사이의 간격으로 의사 난수 값을 반환합니다. idx는 이전에 st(idx)로 저장할 수 있는 시드/상태를 저장하는 데 사용되는 내부 변수의 인덱스입니다.
시드를 초기화하려면 인덱스 idx가 있는 내부 변수에 시드 값을 64비트 부호 없는 정수로 저장해야 합니다.
- root(expr, max)
ld(0) 인수를 갖는 expr로 표현되는 함수가 0..max 구간에서 0인 입력 값을 찾습니다.
expr의 표현식은 연속 함수를 나타내야 합니다. 그렇지 않으면 결과가 정의되지 않습니다.
ld(0)은 함수 입력 값을 나타내는 데 사용됩니다. 즉, 주어진 식이 ld(0)을 통해 액세스할 수 있는 다양한 입력 값을 사용하여 여러 번 평가된다는 의미입니다. 표현식이 0으로 평가되면 해당 입력 값이 반환됩니다.
- round(expr)
표현식 expr의 값을 가장 가까운 정수로 반올림합니다. 예를 들어 "round(1.5)"는 "2.0"입니다.
- sgn(x)
x의 부호를 계산합니다.
- sin(x)
x의 사인을 계산합니다.
- sinh(x)
x의 쌍곡사인을 계산합니다.
- sqrt(expr)
expr의 제곱근을 계산합니다. 이는 "(expr)^.5"와 동일합니다.
- squish(x)
표현식 1/(1 + exp(4*x))를 계산합니다.
- st(idx, expr)
표현식 expr의 값을 내부 변수에 저장합니다. idx는 값을 저장할 변수의 인덱스를 지정하며, 0부터 9까지의 값이다. 함수는 내부 변수에 저장된 값을 반환한다.
저장된 값은 ld(var)를 사용하여 검색할 수 있습니다.
참고: 변수는 현재 표현식 간에 공유되지 않습니다.
- tan(x)
x의 탄젠트를 계산합니다.
- tanh(x)
x의 쌍곡탄젠트를 계산합니다.
- taylor(expr, x)
- taylor(expr, x, idx)
0에서 함수의 ld(idx)차 도함수를 나타내는 표현식이 주어지면 x에서 테일러 급수를 계산합니다.
계열이 수렴하지 않으면 결과가 정의되지 않습니다.
ld(idx)는 expr의 파생 순서를 나타내는 데 사용됩니다. 즉, 주어진 표현식은 표현식이 ld(idx)를 통해 액세스할 수 있는 다양한 입력 값을 사용하여 여러 번 평가됩니다. idx를 지정하지 않으면 0으로 간주됩니다.
0 대신 y에 도함수가 있는 경우 taylor(expr, x-y)를 사용할 수 있습니다.
- time(0)
현재(벽시계) 시간을 초 단위로 반환합니다.
- trunc(expr)
표현식 expr의 값을 0 방향으로 가장 가까운 정수로 반올림합니다. 예를 들어 "trunc(-1.5)"는 "-1.0"입니다.
- while(cond, expr)
표현식 cond가 0이 아닌 동안 표현식 expr을 평가하고 마지막 expr 평가 값을 반환하거나 cond가 항상 false인 경우 NAN을 반환합니다.
다음 상수를 사용할 수 있습니다:
- PI
단위 디스크의 면적, 약 3.14
- E
exp(1) (오일러 수), 약 2.718
- PHI
황금비(1+sqrt(5))/2, 약 1.618
표현식의 값이 0이 아닌 경우 "true"로 간주된다고 가정하면 다음 사항에 유의하세요.
* AND처럼 작동합니다.
+는 OR처럼 작동합니다.
예를 들어 구성은 다음과 같습니다.
if (A AND B) then C
다음과 같습니다:
if(A*B, C)
C 코드에서는 단항 및 이진 함수 목록을 확장하고 인식된 상수를 정의하여 표현식에 사용할 수 있습니다.
평가자는 국제 시스템 단위 접두사도 인식합니다. 접두사 뒤에 'i'가 추가되면 1000의 거듭제곱 대신 1024의 거듭제곱을 기반으로 하는 이진 접두사가 사용됩니다. 'B' 접미사는 값에 8을 곱하고 단위 접두사 뒤에 추가되거나 단독으로 사용될 수 있습니다. . 예를 들어 'KB', 'MiB', 'G' 및 'B'를 숫자 접미사로 사용할 수 있습니다.
사용 가능한 국제 시스템 접두사 목록은 10과 2의 해당 거듭제곱을 나타냅니다.
- y
10^-24 / 2^-80
- z
10^-21 / 2^-70
- a
10^-18 / 2^-60
- f
10^-15 / 2^-50
- p
10^-12 / 2^-40
- n
10^-9 / 2^-30
- u
10^-6 / 2^-20
- m
10^-3 / 2^-10
- c
10^-2
- d
10^-1
- h
10^2
- k
10^3 / 2^10
- K
10^3 / 2^10
- M
10^6 / 2^20
- G
10^9 / 2^30
- T
10^12 / 2^40
- P
10^15 / 2^50
- E
10^18 / 2^60
- Z
10^21 / 2^70
- Y
10^24 / 2^80