From d8cfccf8981c7b51fb9861c3001702a1e1e05ec9 Mon Sep 17 00:00:00 2001 From: Asher Date: Thu, 12 Jun 2025 06:59:54 +0100 Subject: [PATCH] Added pi estimation --- .DS_Store | Bin 0 -> 6148 bytes montecarlo/.DS_Store | Bin 0 -> 6148 bytes .../montecarlo.xcodeproj/project.pbxproj | 284 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 52905 bytes .../xcschemes/montecarlo.xcscheme | 80 +++++ .../xcschemes/xcschememanagement.plist | 22 ++ montecarlo/montecarlo/main.cpp | 61 ++++ 8 files changed, 454 insertions(+) create mode 100644 .DS_Store create mode 100644 montecarlo/.DS_Store create mode 100644 montecarlo/montecarlo.xcodeproj/project.pbxproj create mode 100644 montecarlo/montecarlo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 montecarlo/montecarlo.xcodeproj/project.xcworkspace/xcuserdata/asher.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 montecarlo/montecarlo.xcodeproj/xcshareddata/xcschemes/montecarlo.xcscheme create mode 100644 montecarlo/montecarlo.xcodeproj/xcuserdata/asher.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 montecarlo/montecarlo/main.cpp diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8ca0a8353fddf4b7a030dabb60dc74d506da52a3 GIT binary patch literal 6148 zcmeHK%}N6?5T3MEcP&B>3OxqA7Obrn#LH6a3%H^OmAY$-E^ar{ZrwvE>{(yPC-Hfl zNm8-29=wRy8JK*@{A|dVC6fSvXpejQ02KgmPzehzHcN#3qzh887DA!F(T6(-Uh&??`Z7v-Dr>88(i`bq-#8rCb-R`7 zWYTOL)?~BQoYv&zs8O%UgJx?wb)B8vz2md)V?0RIiy>6tzo%u(;tXD~vvh6G{xFGE za*zI5?ktCq8DIvOfmL9@o_$Vv6&A~DWCoalA2C4ZgG43tEanFF(SZ$JAIV=LB*8wt zB?zTO&th&6Jt)GYBAQfTpBTcVqg~oK&th)Sq=V2i<9F=L!oE<1o*nH{hlB78a?1=b z1M>_N&9FlC|MdI!|9ldUm;q+sUojv`9lz7YCE41#usEu<67?39gyM38pDEbUr5IzW d6jxETpj}c2(X*HvL<3s6Vj0~tiAdx( z>Tm`wv>^mO5^XwuqXJ^@rlE!V6+r^;_Rs5eVlU(#j^BB47<7_S>5*izxrxasO6d$e zahkm6ByQ5}RNVHFXzgvHNnyKSGX-+t!h2#({T4b z^Zc;&HNO8Xe%yTj+lOiirZfr|1^%l7`rf27|5X69Zli!v;8O*}{lL%#+8R@Z^6J1s zrT~aJ?3RXgkxK{;(`ai<72*gQQB*`lB|60*ijMtE$JrWFg^CVDCm%%5Omv1qBXM+d8s1@zyf*Q*>b> pE>-wO!HRr}F;+aq1$1fH&qM{$)|e{99yIeuK+0eWqri_U@B)|Fg_!^V literal 0 HcmV?d00001 diff --git a/montecarlo/montecarlo.xcodeproj/project.pbxproj b/montecarlo/montecarlo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d735bf4 --- /dev/null +++ b/montecarlo/montecarlo.xcodeproj/project.pbxproj @@ -0,0 +1,284 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXCopyFilesBuildPhase section */ + 4DD424612DFA05750012A242 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 4DD424632DFA05750012A242 /* montecarlo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = montecarlo; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 4DD424652DFA05750012A242 /* montecarlo */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = montecarlo; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4DD424602DFA05750012A242 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4DD4245A2DFA05750012A242 = { + isa = PBXGroup; + children = ( + 4DD424652DFA05750012A242 /* montecarlo */, + 4DD424642DFA05750012A242 /* Products */, + ); + sourceTree = ""; + }; + 4DD424642DFA05750012A242 /* Products */ = { + isa = PBXGroup; + children = ( + 4DD424632DFA05750012A242 /* montecarlo */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4DD424622DFA05750012A242 /* montecarlo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4DD4246A2DFA05750012A242 /* Build configuration list for PBXNativeTarget "montecarlo" */; + buildPhases = ( + 4DD4245F2DFA05750012A242 /* Sources */, + 4DD424602DFA05750012A242 /* Frameworks */, + 4DD424612DFA05750012A242 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + 4DD424652DFA05750012A242 /* montecarlo */, + ); + name = montecarlo; + packageProductDependencies = ( + ); + productName = montecarlo; + productReference = 4DD424632DFA05750012A242 /* montecarlo */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4DD4245B2DFA05750012A242 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastUpgradeCheck = 1600; + TargetAttributes = { + 4DD424622DFA05750012A242 = { + CreatedOnToolsVersion = 16.0; + }; + }; + }; + buildConfigurationList = 4DD4245E2DFA05750012A242 /* Build configuration list for PBXProject "montecarlo" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 4DD4245A2DFA05750012A242; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = 4DD424642DFA05750012A242 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4DD424622DFA05750012A242 /* montecarlo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 4DD4245F2DFA05750012A242 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 4DD424682DFA05750012A242 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 4DD424692DFA05750012A242 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + }; + name = Release; + }; + 4DD4246B2DFA05750012A242 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 4DD4246C2DFA05750012A242 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4DD4245E2DFA05750012A242 /* Build configuration list for PBXProject "montecarlo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4DD424682DFA05750012A242 /* Debug */, + 4DD424692DFA05750012A242 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4DD4246A2DFA05750012A242 /* Build configuration list for PBXNativeTarget "montecarlo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4DD4246B2DFA05750012A242 /* Debug */, + 4DD4246C2DFA05750012A242 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4DD4245B2DFA05750012A242 /* Project object */; +} diff --git a/montecarlo/montecarlo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/montecarlo/montecarlo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/montecarlo/montecarlo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/montecarlo/montecarlo.xcodeproj/project.xcworkspace/xcuserdata/asher.xcuserdatad/UserInterfaceState.xcuserstate b/montecarlo/montecarlo.xcodeproj/project.xcworkspace/xcuserdata/asher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e3a51ebe10b0bd0e3e7b0db71cd5d45ffd2881ce GIT binary patch literal 52905 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

j0UsBG4s0Cw)MAZu;Q#Vd*2& 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 literal 0 HcmV?d00001 diff --git a/montecarlo/montecarlo.xcodeproj/xcshareddata/xcschemes/montecarlo.xcscheme b/montecarlo/montecarlo.xcodeproj/xcshareddata/xcschemes/montecarlo.xcscheme new file mode 100644 index 0000000..b54230d --- /dev/null +++ b/montecarlo/montecarlo.xcodeproj/xcshareddata/xcschemes/montecarlo.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/montecarlo/montecarlo.xcodeproj/xcuserdata/asher.xcuserdatad/xcschemes/xcschememanagement.plist b/montecarlo/montecarlo.xcodeproj/xcuserdata/asher.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..830e274 --- /dev/null +++ b/montecarlo/montecarlo.xcodeproj/xcuserdata/asher.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + montecarlo.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + 4DD424622DFA05750012A242 + + primary + + + + + diff --git a/montecarlo/montecarlo/main.cpp b/montecarlo/montecarlo/main.cpp new file mode 100644 index 0000000..d7c167a --- /dev/null +++ b/montecarlo/montecarlo/main.cpp @@ -0,0 +1,61 @@ +// +// main.cpp +// montecarlo +// +// Created by Asher Falcon on 11/06/2025. +// + +#include +#include +#include +#include + +void compute(std::atomic &inside, long long iterations){ + long long to_add = 0; + unsigned int seed = (unsigned int) std::chrono::system_clock::now().time_since_epoch().count(); + std::mt19937 e2(seed); + std::uniform_real_distribution dis(0.0, 1.0); + for(int i=0; i inside(0); + + std::vector threads; + + int threadcount = std::thread::hardware_concurrency();; + + long long actual_n = iterations - iterations % threadcount; + + for(int i=0; i pi_values; + double pi_average = 0; + for(int i=0; i<10; i++){ + double pi = monte_carlo(1e9); + std::cout << "Computed pi #"<