Programming 532

c 언어에서 sin함수는 어떻게 구현되어 있나

c 언어에서 sin함수는 어떻게 구현되어 있나일반적으로 C 표준 라이브러리의 `sin` 함수 내부 구현은 플랫폼/라이브러리마다 조금씩 다르지만, 몇 가지 공통적인 아이디어가 있습니다.[1][8]## 표준 라이브러리 관점C에서 `sin`은 `math.h`에 선언되어 있고, 인자로 라디안 값을 받는 함수입니다.[3][4]실제 구현체는 보통 libc(예: glibc, MSVCRT 등) 안에 들어 있고, C가 아니라 어셈블리나 최적화된 C 코드로 작성되어 있으며, CPU의 부동소수점 명령과 결합되어 동작합니다.[4][6]## 핵심 아이디어(수학적 구현 방식)실제 구현은 보통 다음과 같은 단계들을 조합해서 만듭니다.[1][8]- **범위 축소(range reduction)**: 아주 큰 $$\lvert x ..

Programming 2025.12.11

스택 메모리가 힙 메모리보다 빠른 이유

스택 메모리가 힙 메모리보다 빠른 이유스택 메모리가 힙 메모리보다 빠른 이유는 “어떻게, 누가, 어느 위치를” 다루는지가 훨씬 단순하기 때문이며, 이 때문에 할당·해제 비용과 접근 비용이 훨씬 작기 때문이다.[1][2]## 할당·해제 방식의 단순성- 스택은 함수 호출 시 컴파일러가 미리 정한 규칙대로 스택 포인터만 위·아래로 움직여 연속된 메모리를 한 덩어리로 잡았다가, 함수가 끝나면 한 번에 되돌린다.[1][3]- 힙은 실행 중에 필요한 크기를 보고 “어디에 얼마를 줄지”를 관리하는 전용 알고리즘(메모리 관리자)이 동작해야 하고, 빈 블록 검색·분할·병합 같은 추가 작업 때문에 CPU 명령이 훨씬 많이 든다.[1][5]## 메모리 구조와 캐시 친화성- 스택은 연속된 메모리 구역에 차곡차곡 쌓이는 구조라..

Programming 2025.12.07

juliac로 컴파일한 hello world binary size

juliac로 컴파일한 hello world binary sizeJulia로 juliac를 사용해 "Hello, World!"를 컴파일해 생성된 바이너리의 크기는 약 1.6MB(1,652,184바이트)로 보고됩니다[1]. 이는 --trim 옵션을 이용해 크기를 줄인 결과이며, 트림 옵션 없이 빌드할 경우 파일 크기가 약 150MB에 달할 수 있습니다[1][2]. 최근 AOT(Ahead-of-Time) 컴파일러 개선에 따라, 동일한 트림 기능 활용 시 800KB대의 "상대적으로 작은" 바이너리도 보고되고 있습니다[3]. 하지만 일반적으로 juliac/PackageCompiler로 만든 최소한의 Hello World 프로그램은 1~2MB 정도이며, C 등 타 언어 대비 여전히 크기가 큰 편입니다.### 주요..

Programming 2025.10.09

구글 코랩(colab) 한글 깨짐 현상 해결 방법

참고한 글: https://teddylee777.github.io/colab/colab-korean/ 구글 코랩(colab) 한글 깨짐 현상 해결방법구글 코랩(colab) 한글 깨짐 현상 해결방법에 대해 알아보겠습니다.teddylee777.github.io 1. 아래 코드 실행해서 나눔 폰트 설치!sudo apt-get install -y fonts-nanum!sudo fc-cache -fv!rm ~/.cache/matplotlib -rf 왼쪽 '파일' 탭에서 /usr/share/fonts/nanum 가 보면 나눔 폰트들이 설치되어 있을 것이다. 2. colab 메뉴 런타임 -> 세션 다시 시작 3. plot 하기 전에 아래 코드 실행 (폰트는 위의 경로에 있는 것 중 마음에 드는 것을 선택)#plt..

Programming 2025.09.06

AI를 이용한 프로그래밍 언어 변환

요즘 ChatGPT, Gemini같은 LLM을 이용한 프로그래밍 언어 변환이 정말 편하다. 빠르게 아이디어를 Racket 등 표현력이 좋은 언어로 구현하고, 실행 속도가 느리니, Julia, Golang, C++ 등으로 변환시켜달라고 하면 잘 변환해준다. 일부 변환이 틀리게 되는 경우도 있는데, 그럴 때는 프로그래밍 지식을 이용해서 수정해야 한다. Golang 이상 속도 위주 언어는 개념 위주 언어(함수형 등)에서 한 줄에 되는 것이 여러 줄을 써야 하는 귀찮음이 있어서, 개념을 빠르게 구현할 때 번거로운 면이 있다. 그런데, 이제는 AI가 귀찮은 작업을 대신 해준다 예를 들어 이런 것이다.MNIST 숫자 예측을 이렇게 Racket으로 짜고:#lang racket(require racket/file)(r..

Programming 2025.06.01