나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

템플릿

  • [C++ 11] 문자가 특정 문자 집합에 속하는지 우아하게 테스트하기

    2020.03.30 by ∫2tdt=t²+c

  • [C++, Eigen] Eigen cast함수 SIMD로 벡터화하기

    2019.10.13 by ∫2tdt=t²+c

  • [C++] 템플릿을 이용해서 읽기 쉬운 타입 이름을 얻어보자

    2019.09.29 by ∫2tdt=t²+c

  • [C++] 템플릿 함수를 이용해 STL 컨테이너를 직렬화해보자

    2018.10.05 by ∫2tdt=t²+c

  • [c++] 템플릿 메타 프로그래밍으로 르장드르 다항식 계산하기

    2018.07.08 by ∫2tdt=t²+c

  • 템플릿과 역행렬 3. 2^n차가 아닌 행렬

    2009.06.28 by ∫2tdt=t²+c

  • 템플릿과 역행렬 2. 본격 역행렬 구하기

    2009.06.28 by ∫2tdt=t²+c

  • 템플릿과 역행렬 1. template을 써보자

    2009.06.28 by ∫2tdt=t²+c

[C++ 11] 문자가 특정 문자 집합에 속하는지 우아하게 테스트하기

고전적 방법으로 문자 집합 소속 여부 테스트하기문자열 처리를 하다보면 빠질수 없는 작업이 어떤 문자가 특정 문자 집합에 속하는지 확인하는 것일 겁니다. 예를 들어 'b'가 A~F 범위에 속하는지, '간'이 가~깋 범위에 속하는지 비교하는 것처럼요. 일반적으로 이 작업은 if문을 몇번 써서 수행할 수 있습니다. 예를 들어 특정 문자가 A-F 범위에 속하는지를 확인하는 함수는 다음과 같이 작성할 수 있지요.bool is_in_a_f(int c) { return 'A'

프로그래밍/테크닉 2020. 3. 30. 02:02

[C++, Eigen] Eigen cast함수 SIMD로 벡터화하기

Eigen은 C++기반의 선형 대수 연산 라이브러리입니다. 이 라이브러리의 특징은 c++의 템플릿을 쥐어짜서 컴파일 시간에 행렬 간의 연산식을 분석하고 최적의 연산 순서를 결정해서 연산을 수행한다는 것입니다. 예를 들어 Eigen::MatrixXf a, b, c, d; a = b * c + d; 와 같은 식이 있다면, 일반적인 c++객체에서는 b*c를 연산한 뒤 그 리턴값으로 임시 객체가 생성이 되고, 이 임시객체와 d를 더한뒤 임시 객체를 생성하고, 최종적으로 이 임시객체가 a에 대입되는 식으로 연산이 진행될 겁니다. 하지만 Eigen에서는 Expression Template이라는 템플릿의 응용기법을 이용해 이런 불필요한 연산을 회피하고, b*c를 바로 a에 대입한뒤 거기에 d를 더 더해서 임시객체 생..

프로그래밍/테크닉 2019. 10. 13. 01:35

[C++] 템플릿을 이용해서 읽기 쉬운 타입 이름을 얻어보자

C++에는 런타임 타입 정보(RTTI)를 알려주는 typeid 시스템이 들어가 있습니다. 따라서 컴파일 언어이면서도 생각보다는 유연하게 실행 시간에 특정 변수의 타입을 조회하고 타입 간의 연산을 수행할 수가 있습니다. typeid로 얻어지는 type_info 인스턴스는 name()이라는 멤버 함수를 가지는데, 이 멤버 함수는 해당 타입의 이름을 알려줍니다. 이 값을 통해 현재 변수의 타입이 무엇인지 유저에게 문자열로 출력해줄 수가 있는 것이죠.문제는 이 name()이 사실 사람이 읽기에 적합한 문자열을 주지 않는다는 것입니다. (게다가 컴파일 환경에 따라 출력값이 달라질 수도 있구요.) 예로 gcc 8.3에서 typeid(std::vector).name()는 St6vectorImSaImEE라는 값을 반환..

프로그래밍/테크닉 2019. 9. 29. 19:10

[C++] 템플릿 함수를 이용해 STL 컨테이너를 직렬화해보자

프로그래밍을 하다보면 클래스나 구조체의 내용물을 그대로 파일에 저장하거나, 파일로부터 읽어와야 할 경우가 생깁니다. 구조가 있는 객체의 내용물을 바이트 배열로 저장하는 것을 직렬화(Serialization)이라고 하고, 반대로 바이트 배열로부터 내용물을 읽어와 객체에 채우는 것을 역직렬화(Deserialization)라고 합니다.Java나 C#과 같은 여러 언어에서는 직렬화 기능을 언어차원의 라이브러리로 지원해주는 경우가 많습니다. 따라서 클래스나 구조체의 내용물을 저장하는데에 어려움을 겪지 않죠. 하지만... 당연하게도 C++에서는 언어 자체적으로 그런 기능을 지원하진 않습니다. 직렬화가 하고싶으시다면 직접 짜시면 됩니다. (어떻게 보면 그게 C++의 매력이라고 할수도 있겠죠...?) 사실 이런 꼭 필..

프로그래밍/테크닉 2018. 10. 5. 18:10

[c++] 템플릿 메타 프로그래밍으로 르장드르 다항식 계산하기

르장드르 다항식은 [-1, 1] 구간에서 직교(orthogonality)하는 다항식들의 집합을 가리킵니다. 다항식들간에 서로 직교하면서, 간단하게 곱셈과 덧셈만으로 계산이 가능하다는 특징 덕분에 물리학이나 공학 등의 분야에서 특정 상태를 근사하여 풀 때 직교 기저로 자주 사용합니다. 저 역시도 최근 연구에서 임의의 모양을 띈 다차원 공간의 함수를 근사하기 위해서 이 다항식을 사용했는데요, 이를 위해서 르장드르 다항식을 구현하여 L-BFGS 함수식에 넣어 그 값을 계산해야 할 일이 있었습니다.이 다항식은 재귀적 방법이나 조합식을 이용하여 쉽게 계산될 수 있지만, 이를 매번 함수 값을 구할때마다 반복할 수 없으므로 컴파일 타임에 처리하고자 템플릿 메타 프로그래밍(template meta programming..

프로그래밍/테크닉 2018. 7. 8. 18:26

템플릿과 역행렬 3. 2^n차가 아닌 행렬

5차 정사각행렬 같은 경우는 어떻게 역행렬을 구할수 있을까??? 간단한 방법은 5차를 억지로 8차로 늘려버리는 것이다. 남는 자리에 0 (대각선은 1)을 채우면 된다. 그리고 얘의 역행렬을 구하고 왼쪽위에서 5x5개만 찝어내면 그게 원래의 역행렬이다. 그러면 이제 할일은 2^n꼴이 아닌 matrix를 2^n꼴로 확장시키는 것. template class roundbit { public: enum{value=roundbit::value*2}; }; template class roundbit { public: enum{value=2}; }; 2^m꼴이 아닌 수 n을 n이상의 2^m꼴로 바꿔주기 위해서 만든 클래스이다. roundbit::value하면 8이 되고, roundbit::value하면 64가 되겠다..

프로그래밍/테크닉 2009. 6. 28. 04:03

템플릿과 역행렬 2. 본격 역행렬 구하기

행렬을 작은 크기의 행렬 4개로 나눠어서 계산하는 것에 대해서는 이미 수학자들이 많이 연구해 놓았다. 그러나 글쓴이는 그걸 모르고 공책 한 바닥을 써가며 역행렬 구하는 공식을 구해는 삽질을 했다. (아이구 시간 아까워라.) 무궁한 지식의 원천 위키백과님에게 도움을 요청합니다. 그 공식은 위키백과에 상세히 나와있다. 이제 그럼 본격적으로 역행렬을 구하는 함수를 짜보자. bool has_inverse() { if(a.has_inverse() && (d-c*a.inverse()*b).has_inverse()) { return true; } if(d.has_inverse() && (a-b*d.inverse()*c).has_inverse()) { return true; } return false; } 역시나 te..

프로그래밍/테크닉 2009. 6. 28. 03:41

템플릿과 역행렬 1. template을 써보자

이번 떡밥은 템플릿 공부도 하고 수학 공부도 할겸 템플릿을 이용해서 n차행렬의 역행렬을 구해보는것이다. c++를 좀 써본 사람이라면 template어쩌구 하는 문법은 알거라고 생각하고 본론으로 들어간다. 이런 행렬을 이렇게 묶어주고 묶어서 생긴 새로운 행렬들을 A,B,C,D라 하면 이렇게 표현할수 있다. (행렬들의 행렬에 대해서도 덧셈, 뺄셈, 곱셈, 실수배가 똑같이 정의된다.) 이런 방법을 재귀적으로 사용한다면 2^n꼴의 행렬을 2*2행렬의 형태로 표현가능하다. 이 사실을 바탕으로 matrix 클래스를 짜본다. template class matrix { protected: enum{halfdim=dim/2}; matrix a,b,c,d; public: matrix() { } matrix(matrix _..

프로그래밍/테크닉 2009. 6. 28. 03:13

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

리듬게임 영어구조론 c++ pg어 한국고대경제와사회 자연언어처리 포니게임 정보조직론 문헌정보통계 라틴어 BigFloat php python 토픽 모델링 텍스트 마이닝 우리역사바로알기대회 kiwi NLP Direct3D 악보

방문자

오늘
어제
전체

페이징

이전
1
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바