<commit_before>/* Copyright (C) 2015-2020 김운하(<NAME>)  < unha.kim.ghts at gmail dot com >

이 파일은 GHTS의 일부입니다.

이 프로그램은 자유 소프트웨어입니다.
소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU LGPL 2.1판
규정에 따라 프로그램을 개작하거나 재배포할 수 있습니다.

이 프로그램은 유용하게 사용될 수 있으리라는 희망에서 배포되고 있지만,
특정한 목적에 적합하다거나, 이익을 안겨줄 수 있다는 묵시적인 보증을 포함한
어떠한 형태의 보증도 제공하지 않습니다.
보다 자세한 사항에 대해서는 GNU LGPL 2.1판을 참고하시기 바랍니다.
GNU LGPL 2.1판은 이 프로그램과 함께 제공됩니다.
만약, 이 문서가 누락되어 있다면 자유 소프트웨어 재단으로 문의하시기 바랍니다.
(자유 소프트웨어 재단 : Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA)

Copyright (C) 2015-2020년 <NAME> (< unha.kim.ghts at gmail dot com >)

This file is part of GHTS.

GHTS is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, version 2.1 of the License.

GHTS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with GHTS.  If not, see <http://www.gnu.org/licenses/>. */

package lib

import (
	"bytes"
	"encoding/csv"
	"encoding/gob"
	"errors"
	"io"
	"io/ioutil"
	"math"
	"math/big"
	"net"
	"net/http"
	"os"
	"os/exec"
	"path/filepath"
	"reflect"
	"regexp"
	"runtime"
	"strings"
	"sync"
	"time"
)

func F같음(값, 비교값 interface{}) bool {
	switch 값.(type) {
	case *big.Int, *big.Rat, *big.Float,
		int, int8, int16, int32, int64,
		uint, uint8, uint16, uint32, uint64,
		float32, float64:
		if F2문자열(값) == F2문자열(비교값) {
			return true
		}
	case time.Time:
		비교_시간값, ok := 비교값.(time.Time)
		if ok && 값.(time.Time).Equal(비교_시간값) {
			return true
		}
	}

	if F2문자열(값) == "<nil>" && F2문자열(값) == "<nil>" {
		return true
	} else if reflect.DeepEqual(값, 비교값) {
		return true
	}

	return false
}

func F최소값(값 interface{}, 값_모음 ...interface{}) (최소값 float64, 에러 error) {
	defer S예외처리{M에러: &에러, M함수: func() { 최소값 = 0.0 }}.S실행()

	값_모음 = append(값_모음, 값)
	실수값_모음 := make([]float64, len(값_모음))

	for i := 0; i < len(값_모음); i++ {
		실수값_모음[i] = F2실수_단순형(값_모음[i])
	}

	return F최소값_실수(실수값_모음), nil
}

func F최대값(값 interface{}, 값_모음 ...interface{}) (최대값 float64, 에러 error) {
	defer S예외처리{M에러: &에러, M함수: func() { 최대값 = 0.0 }}.S실행()

	값_모음 = append(값_모음, 값)
	실수값_모음 := make([]float64, len(값_모음))

	for i := 0; i < len(값_모음); i++ {
		실수값_모음[i] = F2실수_단순형(값_모음[i])
	}

	return F최대값_실수(실수값_모음), nil
}

func F최소값_정수(값_모음 ...int) int {
	if len(값_모음) == 0 {
		panic("비어있는 M값 모음.")
	}

	최소값 := 값_모음[0]

	for _, 값 := range 값_모음 {
		if 값 < 최소값 {
			최소값 = 값
		}
	}

	return 최소값
}

func F절대값_정수64(값 int64) int64 {

	if 값 < 0 {
		return 값 * -1
	}

	return 값
}

func F절대값_Duration(값 time.Duration) time.Duration {<commit_msg>lib.F절대값_정수() 추가<commit_after>/* Copyright (C) 2015-2020 김운하(<NAME>)  < unha.kim.ghts at gmail dot com >

이 파일은 GHTS의 일부입니다.

이 프로그램은 자유 소프트웨어입니다.
소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU LGPL 2.1판
규정에 따라 프로그램을 개작하거나 재배포할 수 있습니다.

이 프로그램은 유용하게 사용될 수 있으리라는 희망에서 배포되고 있지만,
특정한 목적에 적합하다거나, 이익을 안겨줄 수 있다는 묵시적인 보증을 포함한
어떠한 형태의 보증도 제공하지 않습니다.
보다 자세한 사항에 대해서는 GNU LGPL 2.1판을 참고하시기 바랍니다.
GNU LGPL 2.1판은 이 프로그램과 함께 제공됩니다.
만약, 이 문서가 누락되어 있다면 자유 소프트웨어 재단으로 문의하시기 바랍니다.
(자유 소프트웨어 재단 : Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA)

Copyright (C) 2015-2020년 <NAME> (< unha.kim.ghts at gmail dot com >)

This file is part of GHTS.

GHTS is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, version 2.1 of the License.

GHTS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with GHTS.  If not, see <http://www.gnu.org/licenses/>. */

package lib

import (
	"bytes"
	"encoding/csv"
	"encoding/gob"
	"errors"
	"io"
	"io/ioutil"
	"math"
	"math/big"
	"net"
	"net/http"
	"os"
	"os/exec"
	"path/filepath"
	"reflect"
	"regexp"
	"runtime"
	"strings"
	"sync"
	"time"
)

func F같음(값, 비교값 interface{}) bool {
	switch 값.(type) {
	case *big.Int, *big.Rat, *big.Float,
		int, int8, int16, int32, int64,
		uint, uint8, uint16, uint32, uint64,
		float32, float64:
		if F2문자열(값) == F2문자열(비교값) {
			return true
		}
	case time.Time:
		비교_시간값, ok := 비교값.(time.Time)
		if ok && 값.(time.Time).Equal(비교_시간값) {
			return true
		}
	}

	if F2문자열(값) == "<nil>" && F2문자열(값) == "<nil>" {
		return true
	} else if reflect.DeepEqual(값, 비교값) {
		return true
	}

	return false
}

func F최소값(값 interface{}, 값_모음 ...interface{}) (최소값 float64, 에러 error) {
	defer S예외처리{M에러: &에러, M함수: func() { 최소값 = 0.0 }}.S실행()

	값_모음 = append(값_모음, 값)
	실수값_모음 := make([]float64, len(값_모음))

	for i := 0; i < len(값_모음); i++ {
		실수값_모음[i] = F2실수_단순형(값_모음[i])
	}

	return F최소값_실수(실수값_모음), nil
}

func F최대값(값 interface{}, 값_모음 ...interface{}) (최대값 float64, 에러 error) {
	defer S예외처리{M에러: &에러, M함수: func() { 최대값 = 0.0 }}.S실행()

	값_모음 = append(값_모음, 값)
	실수값_모음 := make([]float64, len(값_모음))

	for i := 0; i < len(값_모음); i++ {
		실수값_모음[i] = F2실수_단순형(값_모음[i])
	}

	return F최대값_실수(실수값_모음), nil
}

func F최소값_정수(값_모음 ...int) int {
	if len(값_모음) == 0 {
		panic("비어있는 M값 모음.")
	}

	최소값 := 값_모음[0]

	for _, 값 := range 값_모음 {
		if 값 < 최소값 {
			최소값 = 값
		}
	}

	return 최소값
}

func F절대값_정수(값 int) int {
	return F조건부_정수(값 < 0, -1*값, 값)
}

func F절대값_정수64(값 int64) int64 {
	return F조건부_정수64(값 < 0, -1*값, 값)
}

func F절대값_Duration(값 time.Duration) time.Duration {
{'fraction_non_alphanumeric': 0.1369141653501843, 'fraction_numerical': 0.030893452694400563, 'mean_word_length': 3.3763440860215055, 'pattern_counts': {'":': 0, '<': 26, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5787450', 'n_tokens_mistral': 3249, 'n_tokens_neox': 3931, 'n_words': 783}